Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
1、JavaSE:标准版,主要用于开发和部署桌面、服务器以及嵌入设备和实时环境中的Java应用程序。 2、JavaEE:企业版,主要针对企业应用的开发。例如,电子商务网站、ERP系统。 3、JavaME:微型版,主要针对消费类电子设备的。例如,蜂窝电话和可视电话、数字机顶盒、汽车导航系统等等。该版本现已基本被移动端开发替代。
1、一次编译,到处运行
2、编译器的作用:将源文件编译成class文件
3、虚拟机(JVM)的作用:将字节码文件解释成对应平台机器码并执行。
4、java可以实现跨所有的平台,只有提供并且安装了相对应的虚拟机就可以跨该平台。
5、虚拟机和解释器的关系:解释器是虚拟机的一个重要的组成部分。
6、Java语言的执行要经过编译和解释两个阶段 JVM------Java Virtual Machine。JVM是Java平台的基础,和实际的机器一样,它也有自己的指令集,并且在运行时操作不同的内存区域,它相当于是一个独立工作的机器,JVM的主要工作是解释自己的指令集(即字节码)到CPU的指令集或对应的系统调用,保护用户免被恶意程序骚扰。 JVM对上层的Java源文件是不关心的,它关注的只是由源文件生成的类文件(.class文件)。
JRE----java runtime environment.光有JVM还不能让class文件执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和lib和起来就称为jre.
JDK—java开发人员所需要的环境,包括jre。
1、安装JDK。 2、配置环境变量。 3、安装eclips或idea。 4、修改编译器的设置,如file encoding,font,code style等。
1、创建Java项目。 2、src路径下创建package。 3、package下创建class,名为HelloWorld 代码如下
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } }// 单行注释
/* *多行注释 *多行注释 */
/** *文档注释 *@author Ayan Amhed *@version 1.2 */
1、常量是指在代码中直接引用一个值无法改变的对象,如System.out.println(10); System.out.println("Hello world");,常量意义不大,一般不使用。 2、变量是指将内存中可变大小的区域用来存储一个对象,这个对象的值可基于一定的规则在后续使用中改变,这个规则简单的说就是改变的值符合创建对象时定义的类,如果需要改变接收值的对象的类则需要进行类型转换。
byte: byte 数据类型是8位、有符号的,以二进制补码表示的整数; 最小值是 -128(-2^7); 最大值是 127(2^7-1); 默认值是 0; byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一; 例子:byte a = 100;byte b = -50。
short: short 数据类型是 16 位、有符号的以二进制补码表示的整数 最小值是 -32768(-2^15); 最大值是 32767(2^15 - 1); Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一; 默认值是 0; 例子:short s = 1000;short r = -20000。
int: int 数据类型是32位、有符号的以二进制补码表示的整数; 最小值是 -2,147,483,648(-2^31); 最大值是 2,147,483,647(2^31 - 1); 一般地整型变量默认为 int 类型; 默认值是 0 ; 例子:int a = 100000; int b = -200000。
long: long 数据类型是 64 位、有符号的以二进制补码表示的整数; 最小值是 -9,223,372,036,854,775,808(-2^63); 最大值是 9,223,372,036,854,775,807(2^63 -1); 这种类型主要使用在需要比较大整数的系统上; 默认值是 0L; 例子: long a = 100000L;Long b = -200000L。 "L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。
float: float 数据类型是单精度、32位、符合IEEE 754标准的浮点数; float 在储存大型浮点数组的时候可节省内存空间; 默认值是 0.0f; 浮点数不能用来表示精确的值,如货币; 例子:float f1 = 234.5f。
double: double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数; 浮点数的默认类型为double类型; double类型同样不能表示精确的值,如货币; 默认值是 0.0d; 例子:double d1 = 123.4。
boolean: boolean数据类型表示一位的信息; 只有两个取值:true 和 false; 这种类型只作为一种标志来记录 true/false 情况; 默认值是 false; 例子:boolean one = true。
char: char类型是一个单一的 16 位 Unicode 字符; 最小值是 \u0000(即为0); 最大值是 \uffff(即为65,535); char 数据类型可以储存任何字符; 例子:char letter = 'A'。
1、隐式转换 通俗说就是没有任何声明性代码的类型转换,隐式转换的特点可描述为等级高的变量类型可以兼容等级低的变量类型 如:
/* * 隐式转换 */ int a1=10; int b1=20; int c1=a1+b1; System.out.println(a1+"+"+b1+"="+c1); System.out.println("---------------------"); int a2=10; byte b2=20; int c2=a2+b2; // byte c2=a2+b2; 这个写法是错的,因为byte类型低于int类型 System.out.println(c2); System.out.println("---------------------");2、强制转换
/* * 强制转换 * 强制转换可能造成数据丢失 */ int a3=10; byte b3=20; byte c3=(byte) (a3+b3); //强制转换 System.out.println(c3);