Java基础语法
注释
- 单行注释://注释一行
- 多行注释:/* 注释多行*/
- 文档注释:/** */
标识符
- 字母、数字、下划线、$(数字不能开头)
数据类型扩展及面试题讲解
-
整数:二进制(0b开头),八进制,十进制,十六进制表示及计算问题。如:
int a = 10;//十进制 (10) int b = 010;//八进制 以0或0~7开头 (8) int c = 0x10;//十六进制 以0x开头(0~9 A~F)(16)
-
浮点数:因为float具有有限、离散、舍入误差的缺点。在进行比较的时候最好完全使用浮点数进行比较,最好使用数学工具类:BigDecimal
fload f = 0.1f; double d = 0.1; System.out.println(f==d);//false fload d1 = 1234567890454566; fload d2 = d1+1; ystem.out.println(f==d);//true
-
字符拓展:所有字符的本质还是数字。使用Unicode编码格式,2进制表(U0000-UFFFF).
-
一个现在还不理解的小问题
String s1 = new String("hello world"); String s2 = new String("hello world"); System.out.println(s1==s2);//false String s3 = "hello world"; String s4 = "hello world"; System.out.println(s3==s4);//true
-
布尔值扩展:boolean只有两种返回值true和false,默认返回值为false。
boolean flag = true; if(flag == true){}//新手 if(flag){}//老手
-
数据转换(强制转换):在使用强制转换时注意数据溢出问题!
int money = 1000000000; int years = 20; int toatal1 = menoy*years; System.out.println(total1);//-1474836480 数据溢出 int total2 = ((long)money)*years; System.out.println(total2);//20000000000
-
①.常量、变量、作用域
在Java中,利用关键字final指示常量。关键字final表示这个变量只能被赋值一次,一旦被赋值,就不能再更改了,习惯上,常量名使用全大写。如:
final double PI = 3.14;
②.声明变量后,必须用赋值语句对变量进行显示初始化,千万不要使用未初始化的变量。变量的声明尽可能靠近第一次使用的地方。如:
int a ;//声明一个变量 a = 1;//赋值初始化 或 int a = 1;//定义一个变量
③.类变量,类常量(静态常量),定义在main函数外。
static double salary = 2500;//类常量 (public) static final double PI = 3.14;//静态常量,修饰符不分先后顺序
④注意:实例变量:从属对象,如果不进行初始化,这个类型的默认值为0或0.0。
布尔值:默认值是false。
除了基本类型,其余默认值都是null。
运算符
-
二元运算符:+ 、—、*、/
int a = 10; int b = 20; System.out.println(a+b);//30 System.out.println(a-b);//-10 System.out.println(a*b);//200 System.out.println(a/(double)b);//0.5(结果出现小数要进行数据转换)
-
关系运算符:返回的结果有true、false。
int a = 20; int b = 23; System.out.println(a>b);//false System.out.println(a<b);//true System.out.println(a==b);//false System.out.println(a!=b);//true
-
取余
System.out.println(a%b);//3
-
++ —— 自增自减 、一元运算符
int a = 3; int b = a++; System.out.println(b);//3 a先把值赋值给q,再自增。 int c = ++a; System.out.println(a);//a先自增,再把5赋值给c
-
幂运算:2^3 = 2 *2 *2 = 8;
double pow = Math.pow(2,4); System.out.println(pow); //16
-
逻辑运算符:与(and)、或(or)、非(取反)
boolean a = true; boolean b = false; System.out.println(a&&b);//false System.out.println(a||b);//true System.out.println(!(a&&b));//true
-
短路运算
int v = 5; boolean n = (v<4)&&(v++<4); System.out.println(n);//false System.out.println(v);//5
-
移位符:
A = 0011 1100 B = 0000 1101 ______________________________________ A&B = 0000 1100 A|B = 0011 1101 A^B = 0000 0001 //取反 ~B = 1111 0010 2^4 = 16 = 2*2*2*2 << (左移 *2) >> (右移 /2) 0000 0000 0 0000 0001 1 0000 0010 2 0000 0100 4 0000 1000 8 0001 0000 16 System.out.println(2 << 3);//8
-
扩展运算符:+=、-=
int a = 10; int b = 20; a += b;//a=a+b a -= b;//a=a-b
-
字符串连接字符串+ , String
int a = 10; int b = 20; System.out.println(a + b);//30 System.out.println("" + a + b); //1020 System.out.println(a + b + "");//30
-
三元运算符
x ? y : z 如果x==true,则结果为y,否则为z
int score = 80; String type = score>60 ? "及格" : "不及格"; System.out.println(type);//及格