1. 关键字与保留字
1.1 关键字
1.2 保留字
2. 标识符
2.1 标识符与命名规则(必须遵守)
2.2 命名规范(建议遵守)
3. 变量和数据类型
3.1 变量
3.1.1 变量的概念
3.1.2 变量的分类
3.2 数据类型
3.2.1 整数类型
3.2.2 浮点类型
3.2.3 字符类型
Unicode编码
3.2.4 布尔类型
3.2.5 字符串类型(引用数据类型)
- String属于引用数据类型,,翻译为:字符串
- 声明String类型变量时,使用一对””
- String可以和8种基本数据类型变量做运算,且运算只能是连接运算:+
- 运算的结果仍然是String类型
3.3 基本数据类型间的转换
3.3.1 自动类型提升
byte b1 = 2;
int i1 = 129;
//byte b2 = b1 + i1; 编译不通过, byte + int --> int
int i2 = b1 + i1;
long l1 = b1 + i1; // 用更大的数据类型接收也可以
System.out.println(i2); // 131
System.out.println(l1); // 131
float f = b1 + i1;
System.out.println(f); // 131.0
short s1 = 123;
double d1 = s1;
System.out.println(d1); //123.0
//***************特别地*********************
char c1 = 'a'; //97
int i3 = 10;
int i4 = c1 + i3;
System.out.println(i4); // 107
short s2 = 10;
//char c2 = c1 + s2; //编译不通过,short + char --> int
byte b2 = 10;
//char c3 = c1 + b2;//编译不通过, byte + char --> int
//short s3 = b2 + s2;//编译不通过, byte + short --> int
//short s4 = b1 + b2;//编译不通过, byte + byte --> int
3.3.2 强制类型转换
double d1 = 12.9;
//精度损失举例1
int i1 = (int)d1; //截断操作 --> 12
System.out.println(i1);
//没有精度损失
long l1 = 123;
short s2 = (short)l1;
System.out.println(i1); // 123
//精度损失举例2
int i2 = 128;
byte b = (byte)i2;
System.out.println(b);// -128, 因为byte只能表示-128~127
4 进制
4.1 二进制
4.2 进制之间的转换
5. 运算符
5.1 算术运算符
//除号:/
int num1 = 12;
int num2 = 5;
int result1 = num1 / num2;
System.out.println(result1); //2
int result2 = num1 / num2 * num2;
System.out.println(result2); //10
double result3 = num1 / num2;
System.out.println(result3);//2.0 int 2转化为double 2.0
double result4 = num1 / num2 + 0.0; //2.0
double result5 = num1 / (num2 + 0.0); //2.4
double result6 = (double)num1 / num2; //2.4
// 取余: %
//结果的符号与被模数的符号相同
//开发中,经常使用%来判断能否被除尽的情况。结果为0表示除尽
int m1 = 11;
int n1 = 5;
System.out.println("m1 % n1 = " + m1 % n1); // 1
int m2 = -11;
int n2 = 5;
System.out.println("m2 % n2 = " + m2 % n2); // -1
int m3 = 11;
int n3 = -5;
System.out.println("m3 % n3 = " + m3 % n3); // 1
int m4 = -11;
int n4 = -5;
System.out.println("m4 % n4 = " + m4 % n4); // -1
//(前)++ :先自增1,后运算
//(后)++ :先运算,后自增1
int a1 = 10;
int b1 = ++a1;
System.out.println("a1 = " + a1 + ",b1 = " + b1);//11, 11
int a2 = 10;
int b2 = a2++;
System.out.println("a2 = " + a2 + ",b2 = " + b2); //11, 10
int a3 = 10;
++a3;
int b3 = a3;
System.out.println(b3); // 11
//注意点:
short s1 = 10;
//s1 = s1 + 1; //编译失败,因为s1+1是int型,s1是short型不能接收
//s1 = (short)(s1 + 1); //编译不报错,但不推荐这样写
s1 += 1; // 这种写法不会改变变量本身的数据类型
s1++; //自增也不会改变本身变量的数据类型
System.out.println(s1); // 3
//问题:
byte bb1 = 127;
bb1++;
System.out.println("bb1 = " + bb1); // -128
5.2 赋值运算符
//单个赋值
int i1 = 10;
int j1 = 10;
// 连续赋值
int i2,j2;
i2 = j2 = 10;
int i3 = 10,j3 = 20;
// 简化赋值语句
int num1 = 10;
num1 += 2; // 相当于num1 = num1 + 2;
System.out.println(num1); // 12
int num2 = 11;
num2 %= 5; // 相当于num2 = num2 % 5;
System.out.println(num2); // 1
short s1 = 10;
//s1 = s1 + 2; // 编译失败, 因为变为int型
s1 += 2; // 不会改变变量本身的数据类型
System.out.println(s1); // 12
// 开发中,如果希望变量实现+2的操作,有几种方法?(前提:int num = 10;)
// 方式一:num = num + 2;
// 方式二:num += 2; (推荐)
// 开发中,如果希望变量实现+1的操作,有几种方法?(前提:int num = 10;)
// 方式一:num = num + 1;
// 方式二:num += 1;
// 方式三:num++; (推荐)
// 练习1
int i = 2;
i *= 2.6; // 先乘积为5.2,再转化为int型 5
System.out.println(i); // 5
i++;
System.out.println(i); // 6
// 练习2
int m = 2;
int n = 3;
n *= m++; //n = n * m++
System.out.println("m=" + m); // 3
System.out.println("n=" + n); // 6
// 练习3
int n1 = 10;
n1 += (n1++) + (++n1); // n1 = n1 + (n1++) + (++n1); 10+10+12
System.out.println(n1); // 32
5.3 比较运算符
5.4 逻辑运算符
// 区分& 与 &&
// 相同点1:& 与 && 的运算结果相同
// 相同点2:当符号左边是true时,二者都会执行符号右边的运算
// 不同点:当符号左边是false时,&继续执行符号右边的运算。&&不再执行符号右边的运算。
// 开发中,推荐使用&&
boolean b1 = true;
b1 = false;
int num1 = 10;
if(b1 & (num1++ > 0)){
System.out.println("我现在在北京");
}else{
System.out.println("我现在在南京");
}
System.out.println("num1 = " + num1);//11
boolean b2 = true;
b2 = false;
int num2 = 10;
if(b2 && (num2++ > 0)){
System.out.println("我现在在北京");
}else{
System.out.println("我现在在南京");
}
System.out.println("num2 = " + num2);//10
// 区分:| 与 ||
// 相同点1:| 与 || 的运算结果相同
// 相同点2:当符号左边是false时,二者都会执行符号右边的运算
// 不同点3:当符号左边是true时,|继续执行符号右边的运算,而||不再执行符号右边的运算
// 开发中,推荐使用||
boolean b3 = false;
b3 = true;
int num3 = 10;
if(b3 | (num3++ > 0)){
System.out.println("我现在在北京");
}else{
System.out.println("我现在在南京");
}
System.out.println("num3 = " + num3);//11
boolean b4 = false;
b4 = true;
int num4 = 10;
if(b4 || (num4++ > 0)){
System.out.println("我现在在北京");
}else{
System.out.println("我现在在南京");
}
System.out.println("num4 = " + num4);//10
//******************************
//练习
int x1 = 1, y1 = 1;
if(x1++==2 & ++y1==2){
x1 =7;
}
System.out.println("x1="+x1+",y1="+y1); //2, 2
int x2 = 1,y2 = 1;
if(x2++==2 && ++y2==2){
x2 =7;
}
System.out.println("x2="+x2+",y2="+y2);//2, 1
int x3 = 1,y3 = 1;
if(x3++==1 | ++y3==1){
x3 =7;
}
System.out.println("x3="+x3+",y3="+y3);//7, 2
int x4 = 1,y4 = 1;
if(x4++==1 || ++y4==1){
x4 =7;
}
System.out.println("x4="+x4+",y4="+y4);//7, 1
boolean x5=true;
boolean y5=false;
short z5=42;
if(y5 == true)
if((z5++==42)&&(y5=true))z5++;
if((x5=false) || (++z5==45)) z5++;
System.out.println("z5=" + z5);//43
boolean x6=true;
boolean y6=false;
short z6=42;
if((z6++==42)&&(y6=true))z6++;
if((x6=false) || (++z6==45)) z6++;
System.out.println("z6=" + z6);//46
5.5 位运算符
5.6 三元运算符
1、结构:(条件表达式)? 表达式1 : 表达式2
2、说明:
① 条件表达式的结果为boolean类型
② 根据条件表达式真或假,决定执行表达式1,还是表达式2.
如果表达式为true,则执行表达式1。
如果表达式为false,则执行表达式2。
③ 表达式1 和表达式2要求是一致的。
④ 三元运算符可以嵌套使用
3、凡是可以使用三元运算符的地方,都可以改写为if-else,反之,不成立。
4、如果程序既可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符。原因:简洁、执行效率高。
class SanYuanTest {
public static void main(String[] args) {
//获取两个整数的较大值
int m = 12;
int n = 5;
int max = (m > n)? m : n;
System.out.println(max);
double num = (m > n)? 2 : 1.0;
//(m > n)? 2 : "n大";//编译错误
//**************************
n = 12;
String maxStr = (m > n)? "m大" : ((m == n)? "m和n相等" : "n大");
System.out.println(maxStr);
//*****************************
//获取三个数的最大值
int n1 = 12;
int n2 = 30;
int n3 = -43;
int max1 = (n1 > n2)? n1 : n2;
int max2 = (max1 > n3)? max1 : n3;
System.out.println("三个数中的最大值为:" + max2);
//不建议
//int max3 = (((n1 > n2)? n1 : n2) > n3)? ((n1 > n2)? n1 : n2) : n3;
System.out.println("三个数中的最大值为:" + max3);
//该写成if-else:
if(m > n){
System.out.println(m);
}else{
System.out.println(n);
}
}
}