Java是强类型语言
注释
-
单行注释 //
-
多行注释 / /
-
//JavaDoc: 文档注释 / ****** */
标识符
标识符是大小写敏感的
数据类型
-
强类型语言
要求变量的使用要严格符合规定,所有的变量都必须先定义后才可使用 (安全性高,但速度慢)
package test; public class Demo02 { public static void main(String[] args) { //八大基本类型 //整数 int num1 = 10; //最常用 byte num2 = 20; short num3 = 30; long num4 = 40L; //long类型要在后面加L //浮点数 float num5 = 4.53F; //float类型要在后面加F double num6 = 3.1415926535; //字符 char name = '杨'; //只能一个字符 //字符串,String不是关键字,是类 //String name2 = "杨润泽"; //布尔值 boolean flag = true; //boolean flag = false; } }
1B(byte,字节)= 8bit (位)
数据类型拓展
二进制0b 十进制 八进制0 十六进制0x
浮点数拓展
- 浮点数是离散、舍入误差、大约、接近但不等于
//最好完全避免使用浮点数进行比较
//最好完全避免使用浮点数进行比较
//最好完全避免使用浮点数进行比较
(银行业务怎么表示?)
BigDecimal 数学工具类
编码 Unicode (97=a;65=A)
转义字符
\t 制表符(table)
\n 换行符
//布尔值扩展
boolean flag = true;
if(flag==true){} //新手
if(flag){} //老手
//Less is More!
类型转换
//强制转换 (类型)变量名 高—>低
//自动转换 低—>高
注意点:
-
不能对布尔值进行转换
-
不能把对象类型转换为不相干的类型
-
在把高容量转换到低容量的时候,强制转换
-
在转换的时候可能存在内存溢出,或者精度问题!
public class Demo05 { public static void main(String[] args) { int i = 128; double b = (byte)i; //内存溢出 System.out.println(i); System.out.println(b); //1. 不能对布尔值进行转换 //2. 不能把对象类型转换为不相干的类型 //3. 在把高容量转换到低容量的时候,强制转换 //4. 在转换的时候可能存在内存溢出,或者精度问题! System.out.println("========================="); System.out.println((int)23.7); System.out.println((int)-45.89F); System.out.println("========================="); char c = 'a'; int d = c+1; System.out.println(d); System.out.println((char)d); //强制转换 (类型)变量名 高--->低 //自动转换 低--->高 } }
变量
public class Demo08 {
//类变量 static
static double salary = 2500;
//实例变量:从属于对象(不用初始化) 0 0.0 字符串16位0
//在类里面,方法外面
//布尔值:默认是false
//除了基本类型,其余的默认值都是null
String name;
int age;
public static void main(String[] args) {
//局部变量,必须声明和初始化值
int i = 10;
System.out.println(i);
//变量类型 变量名字 = new Demo08()
Demo08 demo08 = new Demo08();
System.out.println(demo08.age);
System.out.println(demo08.name);
//类变量 static
System.out.println(salary);
}
//其他方法
public void add(){
}
}
常量
初始化后不能再改变值!(常量一般使用大写字符)
final
static final double PI = 3.14;
final static double PI = 3.14;
//都可以,修饰符不存在先后顺序
运算符
public class Demo01 {
public static void main(String[] args) {
long a = 13321212123L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d); //Long
System.out.println(b+c+d); //Int
System.out.println(c+d); //Int
}
}
自增++ 自减–
b=a++ 先给b赋值,再自增
b=++a 先自增,再给b赋值
幂运算 2^3
//很多运算,我们会使用一些工具类来操作
double pow = Math.pow(2,3);
System.out.println(pow);
逻辑运算
public class Demo02 {
public static void main(String[] args) {
//逻辑运算符 与(and) 或(or) 非
boolean a = true;
boolean b = false;
System.out.println("a&&b="+(a&&b)); //两个变量都为真,结果才为true
System.out.println("a||b="+(a||b)); //两个变量有一个为真,结果才为true
System.out.println("!(a&&b)="+!(a&&b));
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d); //false
System.out.println(c); //5
>>
}
}
位运算符
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~b = 1111 0010
效率极高!!!
<< *2
>> /2
public class Demo03 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b; //a = a+b
a-=b; //a = a-b
//字符串连接符 +
System.out.println(""+a+b); //1020
System.out.println(a+b+""); //30
}
}
三元运算符
x ? y : z
如果x==true,则结果为y,否则结果为z
运算符的优先级
优先级 | 运算符 | 结合性 |
---|---|---|
1 | ()、[]、{} | 从左向右 |
2 | !、+、-、~、++、– | 从右向左 |
3 | *、/、% | 从左向右 |
4 | +、- | 从左向右 |
5 | «、»、>>> | 从左向右 |
6 | <、<=、>、>=、instanceof | 从左向右 |
7 | ==、!= | 从左向右 |
8 | & | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ? : | 从右向左 |
14 | =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= | 从右向左 |