零基础学javaDay03

Day03

一、算数运算符

算数运算符的基本使用

  1. +、-、*、/、%、++、–
int num1 = 10;
int num2 = 5;
int result = num1 + num2;
System.out.println(result);//15
System.out.println(num1 - num2);//5
System.out.println(10 * 5);//50
System.out.println(10 / 5);//2
System.out.println(10 % 3);//1

注意:

  1. byte类型做运算,会向上转型成int
  2. short类型做运算,会向上转型成int
  3. 浮点类型不能直接做运算,要做运算会使用BigDecimal

i++与i–的底层原理:

int i =  0;   
i = ++i; 
//底层原理:
//i = (int)(i+1);
//i = i;
System.out.println(i);//1

int i = 0;   
i = i++;  
//底层原理:
//int temp = i;--temp用于记录i最初的值
//i = (int)(i+1);
//i = temp
System.out.println(i);//0 

扩展:

byte b = 10;
++b;//底层:b = (byte)(b+1);
short s = 10;
++s;//底层:s = (short)(s+1);
int i = 10;
++i;//底层:i = (int)(i+1);
long l = 10;
l++;//底层:l = (long)(l+1);

二、赋值运算符

=、+=、-=、 *=、/= 、 %=

赋值规则:
s + = 1 s = (T)((s) + (1) )
复合赋值 E1 op= E2等价于简单赋值 E1 = (T)((E1)op(E2)),
其中T是E1的类型。

三、关系运算符

==、!=、>、>=、<=

System.out.println(10 == 10);//true
System.out.println(10 != 10);//false
System.out.println(10 > 10);//false
System.out.println(10 >= 10);//true
System.out.println(10 < 10);//false
System.out.println(10 <= 10);//true

总结:

  1. =是赋值号,==是判断两个值是否相等
  2. 关系运算符运算的结果都是boolean值

四、逻辑运算符

&、&&、|、||、^、!

&与 &&短路与
|或 ||短路或
^异或
!非

1.逻辑运算符的解释及比较

  1. &与:前后两者都是boolean值,同时成立(true),结果才为true
  2. &&短路与:前后两者都是boolean值,同时成立(true),结果才为true
  3. &:判断前者为false后,还会判断后者
    &&:判断前者为false后,不会判断后者,所以效率更高
  4. |或:前后两者都是boolean值,有一个成立(true),结果就为true
  5. ||短路或:前后两者都是boolean值,有一个成立(true),结果就为true
  6. |:判断前者为true,还会判断后者
    ||:判断前者为true,不会判断后者,所以效率更高
  7. ^异或:前后两者都是boolean值,相同为false,不同为true
  8. !非 - 置反

2.逻辑运算符的案例

在dos窗口输入一个数字,判断是否在50~100的区间内


//1.输入一个int数字
Scanner scan = new Scanner(System.in);
System.out.println("请输入一个int值:");
int num = scan.nextInt();

//2.判断是否在50~100的区间内
boolean bool = num>50 && num<100;

//3.输出结果
System.out.println("该值是否在50~100的区间内:" + bool);

五、Scanner类的使用

含义:Java给我们提供的一个类,这个类的功能就是在控制台输入数据

//创建Scanner类的对象
//人类   李冬 = new 人类();
Scanner scan = new Scanner(System.in);

//调用功能
int i1 = scan.nextInt();//在控制台输入一个int数据
int i2 = scan.nextInt();//在控制台输入一个int数据
double d = scan.nextDouble();//在控制台输入一个double数据
String str = scan.next();//在控制台输入一个String数据

六、字符串拼接符 +

+两侧都是数值,此符号为算术运算符
+有一侧或者两侧是字符串,此符号为字符串拼接符

案例

System.out.println(1+2+"abc" + "def" +1+2);//3abcdeef12
		//			3 +"abc" + "def" +1+2
		//			"3abc"	 + "def" +1+2
		//			"3abcdef"		 +1+2
		//			"3abcdef1"		   +2
		//			"3abcdef12"

七、表达式

5+6:算数表达式
5>6:关系表达式
true & false:逻辑表达式

八、三目运算符/三元运算符

1.语法:

数据类型 变量 = (表达式)?值1:值2;

2.理解:

表达式的结果必须是boolean类型
true - 将值1赋值给变量
false- 将值2赋值给变量

3.例子:

int num = (false)?10:20;
System.out.println(num);

4.案例:

在控制台输入两个int类型的数字,输出最大值

//创建Scanner类的对象scan
Scanner scan = new Scanner(System.in);

//输入两个数字
System.out.println("请输入第一个数字:");
int a = scan.nextInt();
System.out.println("请输入第二个数字:");
int b = scan.nextInt();

//判断大小
int max = (a>b)?a:b;//判断a是否大于b,如果大于就返回a,否则返回b

//输出最大值
System.out.println("最大值为:" + max);

在控制台输入三个int类型的数字,输出最大值

Scanner scan = new Scanner(System.in);

System.out.println("请输入第一个数字:");
int a = scan.nextInt();
System.out.println("请输入第二个数字:");
int b = scan.nextInt();
System.out.println("请输入第三个数字:");
int c = scan.nextInt();

int max = (a>b)?a:b;
max = (max>c)?max:c;

System.out.println("最大值为:" + max);

在控制台输入三个int类型的数字,由小到大输出

Scanner scan = new Scanner(System.in);
	
System.out.println("请输入第一个数字:");
int a = scan.nextInt();
System.out.println("请输入第二个数字:");
int b = scan.nextInt();
System.out.println("请输入第三个数字:");
int c = scan.nextInt();

//获取最大值
int max = (a>b)?a:b;
max = (max>c)?max:c;
//获取最小值
int min = (a<b)?a:b;
min = (min<c)?min:c;
//获取中间值
int mid = a+b+c-max-min;

System.out.println(min + "<" + mid + "<" + max);

5.深入三目运算符

扩展面试题1

int a = 5;
System.out.println((a<5)?10.9:9);//9.0

扩展面试题2

char x = 'x';//'x' - ASCII - 120
int i = 10;
System.out.println(false?i:x);//120

扩展面试题3

char x = 'x';//'x' - ASCII - 120
System.out.println(false?100:x);//x
System.out.println(false?65536:x);//120

6.三目运算符返回值规则:

  1. 值1和值2是常量的情况,就会按照取值范围大的类型返回数据
  2. 值1和值2是变量的情况,就会按照取值范围大的类型返回数据
  3. 值1是常量,值2是变量的情况,值1是否在值2所属类型的取值范围里
    在,就按照值2类型返回数据
    不在,就按照值1类型返回数据

九、位运算符

&与 |或 ^异或 << 左移 >> 右移 >>>无符号位右移

1.含义:

将十进制的数据转换为二进制再进行运算

2.解释:

  1. &:同位比较,两者为1,结果才为1
  2. |:同位比较,两者有1,结果就为1
  3. ^:同位比较,两者相同为0,不同为1
  4. &、|、^:前后两者都是数值,该符号为位运算符
    &、|、^:前后两者都是boolean值,该符号为逻辑运算符
  5. <<:整体向左移动n位,就用n个0补位
  6. ‘>>’:整体向右移动n位,就用n个最高位补位
  7. ‘>>>’:整体向右移动n位,就用n个0补位

注意:>> 和 >>> 如果是操作整数,效果是一样的

3.经典面试题

经典面试题1:使用最有效率的方式计算2*8

System.out.println(2<<3);

经典面试题2:描述下列代码的输出结果

//-1 int:1111,1111,1111,1111,1111,1111,1111,1111
//(byte):1111,1111
//(char):1111,1111,1111,1111 -- char类型向上转型用0补位
//(int) :0000,0000,0000,0000,1111,1111,1111,1111
System.out.println((int)(char)(byte)-1);//65535

十、转义字符

含义:

具有特殊意义的字符本身

\n:表示换行
":表示一个双引号
':表示一个单引号
\\:表示一个斜杠
\t:表示水平制表

十一、常量

1.含义:

在程序执行过程中不可变的量

2.分类:

  1. 数字字面量(ps:69、100、200)
  2. 字面值常量(ps:“abcd”,“老师好”)
  3. final(最终的)修饰的变量

字面值常量和final(最终的)修饰的变量:存储在常量池中,直到项目结束才会被销毁

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值