Java自学笔记(零基础) ----- Day 3

目录

一、算术运算符

二、关系运算符(比较运算符)

三、逻辑运算符

1、所及运算符类别:

1.1、a&b :

1.2、a&&b :

1.3、a|b:

1.4、a||b:

1.5、!a:

1.6、a^b:

2、&& 和 & 的区别:

2.1、&&短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高;

2.2、&逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低;

2.3、开发中,我们使用的基本是短路与&&,效率高;

3、|| 和 | 的区别:

3.1、||短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高;

3.2、|逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低;

3.3、开发中,我们基本使用 || ;

4、! 和 ^:

5、一道很有陷阱的面试题:(注意=和==,++z和z++的区别)

四、赋值运算符

1、赋值运算符的分类:

1.1、基本赋值运算符:=;

1.2、复合赋值运算符: += ;-=;*=;/=;%=等(如a += b即为a = a + b,其它同理);

1.3、复合赋值运算符会进行类型转换;

五、三元运算符

1、表达式1 和 表达式2 要为可以赋给接收变量的类型(或可以自动转换),否则必须强转;

2、三元运算符可以转换成 if else 语句;

六、运算符的优先级

七、标识符的命名规则和规范

1、包名:

2、类名、接口名:

3、变量名、方法名:

4、常量名:

5、后面我们学习到类,包,接口,等时:

八、键盘输入

九、进制

1、四种进制:

2、进制的转换(基本功):

十、原码、反码、补码(重点!!!)

1、二进制的最高位是符号位:0表示 正数,1表示 负数;

2、正数的原码,反码,补码都一样(三码合一);

3.负数的反码=它的原码符号位不变,其它位取反(0->1,1->0);

4、负数的补码=它的反码+1,负数的反码=负数的补码-1;

5、0的反码,补码都是0;

6、 java没有无符号数,换言之,java中的数都是有符号的;

7、在计算机运算的时候,都是以补码的方式来运算的;

8、当我们看运算结果的时候,要看他的原码。

十一、位运算

1、实例1(2&3)

2、实例2(~-2)

3、实例3(~2)

4、实例4(2|3)

5、实例5(2^3)

十一、位运算符补充

1、算术右移(>>):低位溢出,符号位不变,用符号位补溢出的高位;

2、算术左移(<<):符号位不变 ,低位补0;

3、逻辑右移(>>>):也叫无符号右移,低位溢出,高位补0;


一、算术运算符

//特别注意:java中 / 向下取整;% 取余运算,结果正负号与被余数一致;
10 / 3 = 3;
-10 / 3 = -3;
10 % 3 = 1;
-10 % 3 = -1;
10 % -3 = 1;
-10 % -3 = -1;

二、关系运算符(比较运算符)



三、逻辑运算符

1、所及运算符类别:

1.1、a&b :

&叫逻辑与:规则:当a和b同时为true ,则结果为true,否则为false;

1.2、a&&b :

&&叫短路与:规则:当a和b同时为true ,则结果为true,否则为false;

1.3、a|b:

|叫逻辑或,规则:当a和b,有一个为true ,则结果为true,否则为false;

1.4、a||b:

||叫短路或,规则:当a和b,有一个为true ,则结果为true,否则为false;

1.5、!a:

叫取反,或者非运算。当a为true,则结果为false,当a为false是,结果为true;

1.6、a^b:

叫逻辑异或,当a和b不同时,则结果为true,否则为false。

2、&& 和 & 的区别:

2.1、&&短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高;

2.2、&逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低;

2.3、开发中,我们使用的基本是短路与&&,效率高;

3、|| 和 | 的区别:

3.1、||短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高;

3.2、|逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低;

3.3、开发中,我们基本使用 || ;

4、! 和 ^:

System.out.println(5 < 10);//true
System.out.println(!(5 < 10));//false
System.out.println((5 < 10)^(3 > 2));//false
System.out.println((5 < 10)^(3 < 2));//true

5、一道很有陷阱的面试题:(注意=和==,++z和z++的区别)


public class Test {
	public static void main(String[] args) {
		boolean x = true;
		boolean y = false;
		short z = 46;
		if((z++==46) && (y=true)) z++;
		if((x=false) || (++z==49)) z++;
		System.out.println(z);
	}
}

四、赋值运算符

1、赋值运算符的分类:

1.1、基本赋值运算符:=;

1.2、复合赋值运算符: += ;-=;*=;/=;%=等(如a += b即为a = a + b,其它同理);

1.3、复合赋值运算符会进行类型转换;

byte b = 3;
b += 2;//等价 b = (byte)(b + 2);
b++;//等价 b = (byte)(b + 1);

五、三元运算符


public class Test01 {
	public static void main(String[] args) {
		int a = 10;
		int b = 99;
		int result = a < b ? a++ : b++;
		System.out.println("result="+result);
	}
}

形如 int result = a < b ? a++ : b++;

若条件为true,则执行第一个运算;若条件为false,则执行第二个运算;(有点类似于python 的if else)

三元运算符使用细节:

1、表达式1 和 表达式2 要为可以赋给接收变量的类型(或可以自动转换),否则必须强转;

    int a = 3;
    int b = 8;
    int c =  a < b ? (int)1.1 : (int)3.4;//使用强转可以
    double d = a > b ? a : b + 3;//这种也可以,因为double 比 int精度高

2、三元运算符可以转换成 if else 语句;

    int res = a > b ? a++ : --b;
    if (a >b ) res = a++;
    else res = --b;

六、运算符的优先级

七、标识符的命名规则和规范

标识符命名规范[更加专业]

1、包名:

多单词组成时所有字母都小写: aaa.bbb.ccc //比如com.hsp.crm;

2、类名、接口名:

多单词组成时,所有单词的首字母大写:XxxYyyZzz[大驼峰];

比如:TankShotGame;

3、变量名、方法名:

多单词组成时,第一个单词首字母小写,第二个单词开始每个

单词首字母大写:xxxYyyZzz[小驼峰,简称驼峰法];

比如:tankShotGame;

4、常量名:

所有字母都大写。多单词时每个单词用下划线连度:XXm_u;

比如:定义一个所得税率TAX_RATE;

5、后面我们学习到类,包,接口,等时:

我们的命名规范要这样遵守,更加详细的看文档。

八、键盘输入

import java.util.Scanner;//导入Scanner这个包
public class Input {
	public static void main(String[] args) {
		//演示接受用户的输入
		//1、引入scanner 这个包
		//Scanner类表示 简单文本扫描器,
		//在java.util包
		//2、创建Scanner 对象,new 创建一个对象,
		// myScanner  就是 Scanner类的对象
		Scanner myScanner = new Scanner(System.in);
		//3、接受用户的输入
		System.out.println("请输入你的名字");
		String name = myScanner.next();//next()方法
		System.out.println("请输入你的年龄");
		int age = myScanner.nextInt();//next()方法
		System.out.println("请输入你的薪水");
		double salary = myScanner.nextDouble();
		System.out.println("名字是:"+name+'\n'+
			"年龄是:"+age+'\n'+
			"薪水是:"+salary);

	}
}

九、进制

1、四种进制:

int n1 = 0b1010;//二进制以 0b 或 0B 开头
int n2 = 1010;//十进制
int n3 = 01010;//八进制以 0 开头
int n4 = 0x1010;//十六进制以 0x 或 0X 开头,A~F不区分大小写 

2、进制的转换(基本功):

略(太基础)

十、原码、反码、补码(重点!!!)

1、二进制的最高位是符号位:0表示 正数,1表示 负数;

2、正数的原码,反码,补码都一样(三码合一);

3.负数的反码=它的原码符号位不变,其它位取反(0->1,1->0);

4、负数的补码=它的反码+1,负数的反码=负数的补码-1;

5、0的反码,补码都是0;

6、 java没有无符号数,换言之,java中的数都是有符号的;

7、在计算机运算的时候,都是以补码的方式来运算的

8、当我们看运算结果的时候,要看他的原码。

十一、位运算

1、实例1(2&3)

//位运算
public class BitOperator {
	public static void main(String[] args) {
		//按位与 &
		// 1、先得到2的补码:2的原码为
		// 00000000 00000000 00000000 00000010
		// 2、2为正数,所以补码与原码相同 
		// 3、3的原码为
		// 00000000 00000000 00000000 00000011
		// 4、3为正数所以3的补码与原码相同
		// 按位与计算,则结果为(补码)
		// 00000000 00000000 00000000 00000010
		// 结果应以原码展示,所以为
		// 00000000 00000000 00000000 00000010
		// 所以结果为2
		System.out.println(2&3);
	}
}

2、实例2(~-2)

//位运算
public class BitOperator02 {
	public static void main(String[] args) {
		//按位与 &
		// 1、先得到-2的反码:-2的原码为
		// 10000000 00000000 00000000 00000010
		// 2、-2的反码为符号位不变,其它位取反
		// 11111111 11111111 11111111 11111101
		// 3、-2的补码为反码+1
		// 11111111 11111111 11111111 11111110
		// 4、~-2的补码为
		// 00000000 00000000 00000000 00000001
		// 5、~-2的结果以原码展示
		// 00000000 00000000 00000000 00000001
		// 结果为1
		System.out.println(~-2);
	}
}

3、实例3(~2)

//位运算
public class BitOperator03 {
	public static void main(String[] args) {
		//按位与 &
		// 1、先得到2的补码:2的补码为
		// 00000000 00000000 00000000 00000010
		// 2、~2的补码为
		// 11111111 11111111 11111111 11111101
		// 3、~2的反码为 
		// 11111111 11111111 11111111 11111100
		// 4、~2的原码展示
		// 10000000 00000000 00000000 00000011
		// 结果为-3
		System.out.println(~2);
	}
}

 

4、实例4(2|3)


public class BitOperator04 {
	public static void main(String[] args) {
		// 1、2的补码
		// 00000000 00000000 00000000 00000010
		// 2、3的补码
		// 00000000 00000000 00000000 00000011
		// 3、2|3的补码运算
		// 00000000 00000000 00000000 00000011
		// 4、2|3的结果原码
		// 00000000 00000000 00000000 00000011
		// 结果为3
		System.out.println(2|3);
	}
}

5、实例5(2^3)


public class BitOperator05 {
	public static void main(String[] args) {
		// 1、2的补码
		// 00000000 00000000 00000000 00000010
		// 2、3的补码
		// 00000000 00000000 00000000 00000011
		// 3、2^3的补码运算
		// 00000000 00000000 00000000 00000001
		// 4、2|3的结果原码
		// 00000000 00000000 00000000 00000011
		// 结果为1
		System.out.println(2^3);
	}
}

十一、位运算符补充

1、算术右移(>>):低位溢出,符号位不变,用符号位补溢出的高位;


public class BitOperator06 {
	public static void main(String[] args) {
		// 00000000 00000000 00000000 00000001
		// 00000000 00000000 00000000 00000000
		// 00000000 00000000 00000000 00000100
		System.out.println(1>>2);//即1/2/2
		System.out.println(1<<2);//即1*2*2
	}
}

2、算术左移(<<):符号位不变 ,低位补0;

3、逻辑右移(>>>):也叫无符号右移,低位溢出,高位补0;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值