java学习day03


10.类型转换

自动提升,手动下降

10.1自动类型转换

自动类型转换
1.两种类型要兼容 数值与数值类型兼容 char类型也可以存储数值

2.目标类型(等号左边)取值范围大于源类型(等号右边)

提升规则:byte、short、char—–>int ——>long——>float——->double

byte、short、char之间运算提升为int

public class Test1{
    public static void main(String [] args ){
        //自动类型转换
        //1.目标类型(等号左边)取值范围大于源类型(等号右边)
        
        byte b1 = 20;
        short s1  = b1;
        System.out,println(s1);
        
        short s2 = 2356;
        int i1 = s2;
        System.out.println(i1);
        
        int i2 = 12345;
        long l1 = i2;
        System.out.println(l1);
        
        long l2 = 123456L;
        float f1 = l2;
        System.out.println(f1);
        
        float f2 = 123.0F;
        double d1 = f2;
        System.out.println(d1);
        
    }
}
public class Test2{
    public static void main(String [] args){
        //自动类型转换中 byte、short、char之间运算,自动提升为int型
        byte b2 = 23;
        short s2 = 56;
        int i3 = b2 + s2;
        System.out.prinitln(i3);
        
        char ch1 = '天';
        short s3 = 12;
        int i4 = ch1 + s3;
        System.out.println(i4);
    }
}

10.2强制类型转换

强制类型转换
1.两种类型要兼容
2.目标类型(等号左边)取值范围小于源类型(等号右边)

整数长度足够,数据完整。

整数长度不够,数据截断。(符号位变化,可能变为负数)

public class Test1{
	public static void main(String [] args){
		System.out.println("----------------强制类型转换------------------");
		//强制类型转换
		//1.两种类型要兼容
		//2.目标类型(等号左边)取值范围小于源类型取值范围(等号右边)
		System.out.println("================范围内强制转换==================");
		
        //范围内强制转换不损失
		short s11 = 120;
		byte b11 = (byte)s11;
		System.out.println(b11);
		
		
		int i11 = 5689;
		short s22 = (short)i11;
		System.out.println(s22);
		
		
		long l11 = 567845;
		int i22 = (int)l11;
		System.out.println(i22);
		
		
		float f11 = 3.14F;
		long l22 = (long)f11;
		System.out.println(l22);
		
		
		double d11 = 20.5;
		float f22 = (float)d11;
		System.out.println(f22);
			
		int a = 23;
		byte b = (byte)a;
		System.out.println(b);
		
		System.out.println("=================超范围强制转换=================");
		//超范围强制转换补码损失
		short ss1 = 257;
		byte bb1 = (byte)ss1;
		System.out.println(bb1);
		
		
		short ss3 = 128;
		byte bb2 = (byte)ss3;
		System.out.println(bb2);
		
		
		short ss4 = 129;
		byte bb3 = (byte)ss4;
		System.out.println(bb3);
		
		
		char ch1 = 'A';
		System.out.println(ch1 + 1); // 66 B  
		System.out.println(ch1 -1);
	}
}

11.运算符

11.1算术运算符

++或者– 如果单独作为一条语句书写 在前在后没有区别
++或者– 如果不是单独一条语句
如果++或者–在前 先执行++或者– 再执行其他的
如果++或者–在后 先执行其他的 再执行++或者–

image

image

public class Test1{
    public static void main(String [] args){
        System.out.println("-----------算术运算符 -----------------");
		System.out.println("----------- + - * / %---------------");
		//两个操作数 算术运算符+ - * / %
		
		int a = 10;
		int b = 20;
		int c = 30;
		
		System.out.println(a + b);
		System.out.println(a - b);
		System.out.println(a * b);
		System.out.println(a / b); // 不能保存小数
		System.out.println(a % c);
		
		System.out.println("----------- ++(自增) --(自减)---------------");
		//一元算术运算符++(自增) --(自减)
		// ++或者-- 如果单独作为一条语句书写 在前在后没有区别
		int a1 = 10 ;
		a1++;
		System.out.println(a);
		
		int c1 = 10;
		++c1;  
		System.out.println(c1);
		
		int b1 = 15;
		b1--; // b = b - 1;
		System.out.println(b1);
		
		int d1 = 15;
		--d1;
		System.out.println(d1);
		
		// ++或者-- 如果不是单独一条语句
        // 如果++或者--在前 先执行++或者--  再执行其他的
		// 如果++或者--在后 先执行其他的 再执行++或者--
		int e = 10;
		int f = e++;
		
		System.out.println(f);
		System.out.println(e);
		
		int k = 10;
		int m = ++k;
		
		System.out.println(m);
		System.out.println(k);
		
		
		
		int h = 15;
		int j = h--;
		
		System.out.println(j); 
		System.out.println(h);
    }
}

11.2赋值运算符

image

public class Test1{
    public static void main(String [] args){
        System.out.println("================赋值运算符================");
		// 赋值运算符
		int a = 10; // 将等号右边赋值给等号左边  
		
		a += 10; // a = a + 10;
		System.out.println(a);
		
		a -= 5; // a = a - 5;
		System.out.println(a);
		
		
		a *= 6; // a = a * 6;
		System.out.println(a);
		
		
		a /= 3; // a = a / 3;
		System.out.println(a);
		
		
		a %= 2; // a = a % 2;
		System.out.println(a);

		System.out.println("---------- a +=10; 与 a = a + 10;的区别----------------");
		
		short s1 = 10;
		s1 += 10;			//类型不会提升
		int s2 = s1 + 10;	//自动类型提升
		System.out.println("short型:/t" + s1);
		System.out.println("int型:/t" + s2);
	
		byte b1 = 10;		
		b1 += 10;			//类型不会提升
		int i2 = b1 + 20;	//自动类型提升
		System.out.println("byte型:/t" + b1);
		System.out.println("int型:/t" + i2);
    } 
}

11.3关系运算符

关系运算符 最终结果都为布尔类型

image

public class RelationOpreator{
    public static void main(String [] args){
        System.out.println("================关系运算符================");
		//关系运算符 最终结果都为boolean类型
		int a = 40;
		int b = 50;
		System.out.println(a > b);
		System.out.println(a < b);
		System.out.println(a >= b);
		System.out.println(a <=b );
		System.out.println(a == b);
		System.out.println(a != b);
    }
}

11.4逻辑运算符

//逻辑运算符

&& 短路与 同真为真(其他为假)第一个假短路

& 逻辑与 同真为真(其他为假)

|| 短路或 同假为假(其他为真)第一个为真短路

| 逻辑或 同假为假(其他为真)

image

image

public class Test1{
	public static void main(String [] args){
		//逻辑运算符
		// && 短路与 要求两个或多个表达式都成立 则结果为真
		// 短路与 有短路的效果 如果第一个条件不成立 则后续的条件不再执行
		
		// & 逻辑与 要求两个或多个表达式都成立 则结果为真  没有短路效果  
		
		
		// || 短路或 要求两个或者多个表达式有一个成立 则结果为真
		// 短路或 有短路的效果 如果第一个条件已经成立  则后续的条件不再执行
		
		
		// | 逻辑或 要求两个或者多个表达式有一个成立 则结果为真  没有短路效果
		
		int a = 15;
		int b = 20;
		int c = 22;
		
		System.out.println("--------短路与---------");
		System.out.println(a < b && b < c);	//true
		System.out.println(a > b && b < c);//false
		
		System.out.println("--------逻辑与---------");
		System.out.println(a < b & b < c);//true
		System.out.println(a > b & b < c);//false
		
		System.out.println("=======================");
		System.out.println("--------短路或---------");
		
		int d = 22;
		int e = 33;
		int f = 44;
		System.out.println(d > e || e < f);	//true
		System.out.println(d > e || e > f);	//false
		
		System.out.println("--------逻辑或---------");
		System.out.println(d > e | e < f);	//true
		System.out.println(d > e | e > f);	//false
		
		int x = 6;
		int y = 7;
		int z = 7;
		System.out.println((y-- == x) && (--y != x));//false
		System.out.println(y);	//6
		
		System.out.println((z-- == x) & (--z != x));//false
		System.out.println(z);	//4
		
		int j = 10;
		int k = 11;
		int l = 10;
		System.out.println((++j == k) || (++j == k));//true
		System.out.println(j);	//11
		
		System.out.println((++l == k) | (++l == k));//true
		System.out.println(l);	//12
	} 
}
public class Test2{
	public static void main(String [] args){
        // ! 非
		boolean bl1 = !true;
		boolean bl2 = !false;
		
		System.out.println(bl1);
		System.out.println(bl2);
		
		System.out.println(!true);
		System.out.println(!false);
        
       // 三目(三元)运算符   布尔表达式 ?  结果1 : 结果2 
		
		System.out.println(20 == 20 ? "条件成立" : "条件不成立");
		
		int age = 19;
		System.out.println(age >= 18 ? "成年了" : "未成年");
		
		
		int a = 20;
		int b = a >= 20 ? 55 : 66;
		System.out.println(b);
	}
}

11.5

image

public class Test1{
	public static void main(String [] args){
		// 位运算符
		// 左移:在有效的范围以内,左移几位表示乘以2 的几次方
		
		System.out.println(1 << 1);
		System.out.println(1 << 2);
		System.out.println(1 << 3);
		System.out.println(1 << 4);
		System.out.println(1 << 5);
		
		
		System.out.println(1 << 32);
		
		System.out.println("------------------------------------------");
		
		
		// 右移:在有效的范围内 右移几位 表示除以2的几次方   
		
		System.out.println(8 >> 2);
		System.out.println(8 >> 10);
		
		System.out.println(-1 >> 100);
		System.out.println(-20 >> 2); // -5
		
		// >>> 无符号右移
		
		System.out.println(-20 >>> 2);
		System.out.println(20 >>> 3);
		
		
		
		// & 与  二进制相同位 都为1 结果为1  其他都为0
		
		System.out.println(10 & 30);
		
		
		// | 或 二进制相同位 有一个为1 或者两个都为1  结果为1  其他为0
		System.out.println(10 | 30);
		
		
		// ^ 异或 二进制相同位 相同为0  不同为1 
		System.out.println(10 ^ 30);
		
		
		// ~ 取反  每一位 0改为1  1改为0
		System.out.println(~30);
		
		// 整数的四种表示形式
		
		// 二进制 0B binary  
		int i1 = 0B11;
		System.out.println(i1);
		int i2 = 20;
		
		// 八进制 以0开头
		int i3 = 012;
		System.out.println(i3);
		
		
		// 十六进制 0X开头
		int i4 = 0XA3DF;
		System.out.println(i4);
		
	}
}

12.变量的命名规范

字下美人数骆驼

字:字母

下:下划线

美:美元符号$

人:人民币符号¥

数:数字

骆驼:驼峰命名 studentNameAndAge

可以以字母、下划线、美元符号、人民币符号开头,可以包含数字,不能以数字开头,见名知义,有意义

原创文章,作者:wure,如若转载,请注明出处:https://blog.ytso.com/272704.html

(0)
上一篇 2022年7月9日
下一篇 2022年7月9日

相关推荐

发表回复

登录后才能评论