参考书:《Java 核心技术 卷1 基础知识》
1.数据类型
Java中一共有8种基本类型,其中4种整型,2种浮点类型,1种字符类型,和1种用于表示真值的类型。
整型: int:4字节;short:2字节;long:8字节;byte:1字节。
浮点类型:float:4字节; double:8字节。
char类型:有些Unicode字符可以用一个char值表示,有些则需要两个。
boolean类型:false和true。注意:整型和布尔值之间不能进行相互转换。
2.变量与常量
声明变量:
如:
double salary;
int vacationDays;
long Population;
boolean done;
变量名必须是一个以字母开头并由字母或数字构成的序列。在Java中字母和数字范围更大,如"_","$"或在某种语言中表示字母的任何Unicode字符,都属于字母。
变量初始化:
如:
int days;
days = 12;
或:
int days = 12;
注:Java10开始,对于局部变量如果可以从变量初始值推断出它的类型,就不需要声明类型,只需用关键词var。如:
var days = 20; //days is an int
var greeting = “HELLO”; //greeting is a String
常量:
关键字:final。final表示这个变量只能被赋值一次。习惯上,常量名使用全大写。
例如:final double CM_PER_INCH = 2.54;
若要某个变量在一个类的多个方法中使用,通常将这些常量成为类常量,关键字:static final。
例如:public static final double CM_PER_INCH = 2.45;
枚举类型:
例如:
enum Size{SMALL, MEDIUM, LARGE, EXTRA_LARGE};
Size s = Size.MEDIUM;
3.运算符
算术运算符:+、- 、* 、/。参与 / 运算的两个操作数都是整数时,表示整数除法,否则表示浮点除法,15.0/2等于7.5。
取余:%,15%2等于1。
数学函数与常量:
Math类中包含各种数学函数。如,计算一个数值的平方根:
double x = 4;
double y = Math.sqrt(x);
System.out.println(y); //输出2
数值类型之间的转换:
如:
int n = 123456789;
float f = n; //f 等于 1.23456792E8,损失了一定精度。
如果两个操作数有一个double,另一个操作数就会转换为double;
否则,如果一个是float,另一个转化为float;
否则,如果一个是long,另一个转化为long;
否则,两个都被转化为int。
强制类型转换:
如:
double x = 9.997;
int x = (int) x;
如果想对浮点数进行舍入运算,以便得到最接近的整数,需使用Math.round方法:
double x=9.997;
int nx = (int) Math.round(x);
结合赋值和运算符:
x+=4;等价于x=x+4;
注:如果运算符得到一个值,其类型与左侧操作数的类型不同,就会发生强制类型转换。如:如果x是一个int,则 x+=3.5;是合法的,将把x设置为(int)(x+3.5)。
自增与自减运算符:同C,C++。
关系和boolean运算符:值为false或true,注意:不为0或1
位运算符:
& : and | : or ^ : xor(异或) ~ : not
4.字符串
Java字符串就是Unicode字符序列。
Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类,很自然地叫做String。每个双引号括起来的字符串都是String类的一个实例:
String e = " ";
String greeting = “HELLO”;
类似于C,C++,Java字符串中的代码单元和代码点从0开始计数。
子串:
String类的substring方法可以从一个较大的字符串提取一个子串。例如:
String greeting = “HELLO”;
String s = greeting.substring(0,3);
s为"HEL"。其中3是不想复制的第一个位置,即要复制0,1,2,而不包含3。
拼接:
Java可以用+号连接两个字符串。
String e= “Expletive”;
String G = “deleted”;
String m = e + G;
上述代码将"Expletivedeleted" 赋给m。
·当一个字符串与一个非字符串的值进行拼接时,后者会转换为字符串。如:
int age = 13;
String r = “ABC” + age;
则 r 为"ABC13"。这种特性通常用在输出语句中,例如:
System.out.println(“The answer is " + answer);
·如果需要把多个字符串放在一起,用一个界定符分隔,可以用静态join方法:
String a = String.join(”/",“s”,“m”,“l”,“xl”);
字符串a为"s/m/l/xl"。
如果字符串重复出现,可以用repeat方法:
String r=“java”.repeat(3);
字符串r为"javajavajava"。
如果想将"HELLO"变成"HELP!",可以这样:
String greeting = “HELLO”;
greeting = greeting.substring(0,3)+“P!”;
检测字符串是否相等:
对于表达式 s.equals(t) 如果s与t相等,则返回true,否则返回false。其中s和t可以是"HELLO"这样的字符串字面量,也可以是greeting这样的字符串变量。
注:一定不要使用==检测两个字符串是否相等。
其他:
检验一个字符串是否为空:
if(str.length()==0) 或 if(str.equals(""))