Java特性和优势
- 简单性
- 面向对象
- 可移植性:JVM
- 高性能
- 分布式
- 动态性:反射
- 多线程
- 安全性
- 健壮性
Java三大版本
- JAV SE标准版:桌面程序,控制台开发…
- Java ME:(了解)
- Java EE企业版:服务器端开发、web端开发…
JDK、JRE、JVM
JDK:Java Development Kit(Java开发工具)
JRE:Java Runtime Environment(Java运行环境)
JVM:Java Virtual Machine(Java虚拟机)
Java程序运行机制
先编译,在解释
Java基础语法
- 注释
/*这是注释,多行注释*/
//这也是注释,单行注释
下面是文档注释
/**
* @deprecated
* @author
*/
-
关键字
Java所有的组成都需要名字。类名、变量名以及方法名都被成为标识符。
标识符必须以大小写字母、美元符号$或者下划线开头。 -
数据类型
Java是强类型语言,必须先定义才能使用。
public class Demo01 {
public static void main(String[] args) {
//八大基本数据类型
//整数
int num1=10;//占4个字节范围
byte num2=10;//占1个字节范围
short num3=20;//占两个字节范围
long num4=30L;//long类型后面要加L,占8个字节范围
//小数:浮点数
float num5=1.1F;//Float类型后面要加F,占4个字节范围
double num6=1.1;//占8个字节
//字符
char name='种';//这里String不是关键字,是类,占两个字节
//布尔值
boolean flag=true;//占一位,其值只有两个
}
}
拓展:
尽量完全避免浮点数的比较。
public class Demo02 {
public static void main(String[] args) {
//进制
int i=10;
int i2=010; //八进制0开头
int i3=0x32; //十六进制0x开头
int i4=0b10; //二进制0b开头
//字符
char name='a';
System.out.println((int)name);//强制转换
}
}
- 类型转换
由高到底需要强制转换,低到高是自由转换。
(1)不能对布尔值转换
(2)不能把对象类型转换为不相干的类型
(3)在高容量转换为低容量时,需要强制转换
(4)转换的时候可能内存溢出,或者精度问题
public class Demo03 {
public static void main(String[] args) {
//jdk7中数字较大时可以用下划线分离
int i=10_0000_0000;
int j=20;
int a=i*j;
System.out.println(a);//超出了整数的字节范围
long b=i*j;//这样也溢出,因为两个整数相乘还是整数,
long c=i*(long)j;//这样才行
System.out.println(b);
System.out.println(c);
}
}
- 变量
变量:变量名,变量类型和作用域
变量作用域:类变量、实例变量和局部变量
//变量:变量名,变量值和作用域
//变量作用域:类变量、实例变量和局部变量
public class Demo04 {
//类变量 static
static double salary=2000;
//实例变量从属于对象,不初始化时为默认值,布尔类型false、0、0.0
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量;必须声明和初始化
int i=10;
System.out.println(i);
//实例变量
Demo04 demo04=new Demo04();
System.out.println(demo04.age);
//类变量 static
System.out.println(salary);
}
}
变量的命名规范:
- 运算
如果是b=a++;
则是先赋值,a再自增。
public class demo01 {
public static void main(String[] args) {
int a=1;
int b=a++;
int c=++a;
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
- 最快运算2*8?位运算效率极高!!!
这是右移,<<这是左移;
代表/2,<<代表*2;
- 字符串连接
如果运算左边有字符串,则都作为字符串输出(除非后面括起来),右边有正常运算
public class demo02 {
public static void main(String[] args) {
int a=10;
int b=20;
System.out.println(""+a+b);
System.out.println(a+b+"");
}
}
9. 三元运算符
x?y:z;
//如果x为真,则结果为y,否则为z。
- 生成API文档(tools generdoc)