1. 赋值运算符
(1)基本介绍
基本赋值运算符 = int a = 10;
复合赋值运算符
+= ,-= ,*= , /= ,%= 等 , 重点讲解一个 += ,其它的使用是一个道理
a += b; [等价 a = a + b; ]
a -= b; [等价 a = a - b; ]
(2)特点
运算顺序从右往左
int num = a + b + c;
赋值运算符的左边 只能是变量,右边 可以是变量、表达式、常量值
int num = 20; int num2= 78 * 34 - 10; int num3 = a;
注意:复合赋值运算符会进行类型转换
public class Test8
{
public static void main(String[] args)
{
int n1 = 10;
n1+=4;//n1=n1+4
System.out.println(n1);//14
n1/=3;//n1=n1/3
System.out.println(n1);//4
//复合赋值运算符会进行类型转换
byte b = 3;
b+=2;//b=b+2等价于b=(byte)(b+2)
b++;//等价于b=(byte)(b+1)
}
}
2. 三元运算符 77
(1)运算规则
条件表达式 ? 表达式 1: 表达式 2;
1. 如果条件表达式为 true,运算后的结果是表达式 1;
2. 如果条件表达式为 false,运算后的结果是表达式 2;
public class Test8
{
public static void main(String[] args)
{
// int a = 10;
// int b = 99;
// int result = (a>b?a++:b--);
// System.out.println(result);//99
int a = 10;
int b = 99;
int result = (a<b?a++:b--);
System.out.println(result);//10
System.out.println(a);//11
System.out.println(b);//99
}
}
(2)使用细节 78
表达式 1 和表达式 2 要为可以赋给接收变量的类型(或可以自动转换)
//三元运算符使用细节
public class Test8
{
public static void main(String[] args)
{
int a = 3;
int b = 8;
//int c = a>b?1.1:3.4;//错误,类型不匹配
int c = a>b?(int)1.1:(int)3.4;//对
//表达式 1 和表达式 2 要为可以赋给接收变量的类型(或可以自动转换)
int d = 3;
int e = 8;
double f = d>e?d:e-3;//对,三元运算符可以自动转换,int->double
}
}
(3)三元运算符可以转成 if--else 语句 79
int res = a > b ? a++ : --b;
if ( a > b)
res = a++;
else
res = --b;
3. 小练习
//使用三元运算符,找出三个数中的最大值 79
public class Test8
{
public static void main(String[] args)
{
int n1 = 55;
int n2 = 33;
int n3 = 123;
int max1=n1>n2?n1:n2;
int max2=max1>n3?max1:n3;
System.out.println("最大数="+max2);
//使用一条语句实现
int max = (n1>n2?n1:n2)>n3?(n1>n2?n1:n2):n3;
System.out.println(max);
}
}
4. 优先级 80
(1) 优先级一览表
() {}等
单目运算符
算数运算符
位移运算符
比较运算符
逻辑运算符
三元运算符
赋值运算符
5. 标识符命名规则和规范 81
(1)命名规则
(2) 命名规范 82
1) 包名:多单词组成时所有字母都小写:aaa.bbb.ccc //比如 com.hsp.crm
2) 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz [大驼峰]
比如: TankShotGame
3) 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz [小 驼峰, 简称 驼峰法]
比如: tankShotGame
4) 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
比如 :定义一个所得税率 TAX_RATE
5) 后面我们学习到 类,包,接口,等时,我们的命名规范要这样遵守,更加详细的看文档.
6.键盘输入语句
演示接受用户的输入
步骤
Scanner 类 表示 简单文本扫描器,在 java.util 包
1. 引入/导入 Scanner 类所在的包
2. 创建 Scanner 对象 , new 创建一个对象
myScanner 就是 Scanner 类的对象
3.接收用户输入,使用相关方法
import java.util.Scanner;//表示把java.util包下的Scanner类导入
//键盘输入语句
public class Test9
{
public static void main(String[] args)
{
//演示接受用户的输入
//步骤
//Scanner 类 表示 简单文本扫描器,在 java.util 包
//1. 引入/导入 Scanner 类所在的包
//2. 创建 Scanner 对象 , new 创建一个对象
// myScanner 就是 Scanner 类的对象
Scanner myScanner = new Scanner(System.in);
//3.接收用户输入,使用相关方法
System.out.println("请输入名字:");
String name = myScanner.next();
System.out.println("请输入年龄:");
int age = myScanner.nextInt();
System.out.println("请输入薪水:");
double sal = myScanner.nextDouble();
System.out.println("人的信息如下:");
System.out.println("名字="+name+" 年龄="+age+" 薪水="+sal);
}
}
//自我练习
//计算两个数的值
import java.util.Scanner;
public class Test9
{
public static void main(String[] args)
{
Scanner a = new Scanner(System.in);
System.out.println("请输入两个数字");
int x = a.nextInt();
int y = a.nextInt();
System.out.println("输入完毕,请输入是");
String really = a.next();
int b = x+y;
System.out.println("两数结果是:"+b);
}
}
//自我练习2
import java.util.Scanner;
public class Test9
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("请输入姓名");
String name = input.next();
System.out.println("请输入成绩");
double score = input.nextDouble();
System.out.println("姓名:"+name+" 成绩:"+score);
}
}
//自我练习3
import java.util.Scanner;
public class Test9
{
public static void main(String[] args)
{
String tmp = "15";
int b = Integer.parseInt(tmp);
System.out.println(b);//15
char d = tmp.charAt(1);
System.out.println(d);//字符5
Scanner input = new Scanner(System.in);
System.out.println("请输入一个数字");
int a = input.nextInt();
int c = a/b;
System.out.println(c);
}
}
7.进制 87
7.1 进制介绍
对于整数,有四种表示方式:
二进制:0,1 ,满 2 进 1.以 0b 或 0B 开头。
十进制:0-9 ,满 10 进 1。
八进制:0-7 ,满 8 进 1. 以数字 0 开头表示。
十六进制:0-9 及 A(10)-F(15),满 16 进 1. 以 0x 或 0X 开头表示。此处的 A-F 不区分大小写。
//进制
public class Test9
{
public static void main(String[] args)
{
//二进制
int n1 = 0b1010;
//十进制
int n2 = 1010;
//八进制
int n3 = 01010;
//十六进制
int n4 = 0X10101;
System.out.println("n1="+n1);
System.out.println("n2="+n2);
System.out.println("n3="+n3);
System.out.println("n4="+n4);
}
}
8.进制转换 87
8.1 总结
8.2 八进制转换成二进制
规则:将八进制数每 1 位,转成对应的一个 3 位的二进制数即可。
案例:请将 0237 转成二进制
02(010)3(011)7(111) = 0b10011111
8.3 十六进制转换成二进制
规则:将十六进制数每 1 位,转成对应的 4 位的一个二进制数即可。
案例:请将 0x23B 转成二进制
0x2(0010)3(0011)B(1011) = 0b001000111011
9.位运算 99
位运算:
1)
算术右移 >>:低位溢出,符号位不变,并用符号位补溢出的高位
2) 算术左移 <<: 符号位不变,低位补 0
3) >>> 逻辑右移也叫无符号右移,运算规则是: 低位溢出,高位补 0
4) 特别说明:没有 <<< 符号
>>(算数右移)
int a=1>>2; // 1=> 00000001=>00000000本质1/2/2=0
<<(算术左移)
int c=1<<2; // 1=> 00000001=>00000100本质1*2*2=4
>>>(无符号右移)
//位移操作符
public class Test9
{
public static void main(String[] args)
{
int a=1>>2;
int c=1<<2;
System.out.println(a);//0
System.out.println(c);//4
System.out.println(4<<3);//本质4*2*2*2=32
System.out.println(15>>2);//本质15/2/2=3
System.out.println(-1>>2);//-1
System.out.println(-1<<2);//-4
}
}
按位取反:~
按位与:&
按位或:|
按位异或:^,相同为0,不同为1
9.1 原码、反码、补码 98
//位运算
public class Test9
{
public static void main(String[] args)
{
//1.先得到2的补码=> 2的原码 00000000 00000000 00000000 00000010
// 2的补码 00000000 00000000 00000000 00000010
//3.在得到3的补码 2的原码 00000000 00000000 00000000 00000011
// 3的补码 00000000 00000000 00000000 00000011
// 按位与&
// 00000000 00000000 00000000 00000010
// 00000000 00000000 00000000 00000011
//结果 00000000 00000000 00000000 00000010//运算后的补码,因为是正数,三码合一
System.out.println(2&3);//2
//1. 显得到-2 的原码 10000000 00000000 00000000 00000010
//2. -2的反码 11111111 11111111 11111111 11111101
//-2的补码 11111111 11111111 11111111 11111110
//~-2 00000000 00000000 00000000 00000001 运算后的补码,因为是正数,三码合一
System.out.println(~-2);//1
//2的原码反码补码相同,所以补码为00000000 00000000 00000000 00000010
//~2 11111111 11111111 11111111 11111101 运算后的补码,负数
//运算后的反码 11111111 11111111 11111111 11111100
//运算后的原码 10000000 00000000 00000000 00000011 //-3
System.out.println(~2);//-3
}
}
10.小练习
例1
//小练习
public class Test9
{
public static void main(String[] args)
{
System.out.println(-10.5%3);//等价于-10.5-(int)-10.5/3*3=-10.5-(-10)/3*3=-10.5+9=-1.5
//这个-1.5是一个接近-1.5的近似值
int i=66;
System.out.println(++i+i);//134 i=67+i=134
}
}
例2
//例2
//将String转成double,将char转成String语句
public class Test9
{
public static void main(String[] args)
{
String str = "18.8";
double d = Double.parseDouble(str);
System.out.println(d);
char c = '韩';
String tmp = c+"";
System.out.println(tmp);
}
}
例3
import java.util.Scanner;
public class Test9
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int a = input.nextInt();
String s=input.next();
double d=input.nextDouble();
System.out.println(a);
System.out.println(s);
System.out.println(d);
}
}