2-java学习-常量、变量、运算符-代码

2-java学习-常量、变量、运算符-代码

1、赋值运算符

class  FZYSF{
	public static void main(String[] args) {
		//把右边这个100 赋值给左边这个int类型的变量num
		int num=100;
			num+=20; 
			num-=20;
		System.out.println("num:"+num);

		System.out.println("-----------------------------------");
		byte b1=10;
			//+= -= %= 会自动帮你强制类型转换
			b1+=120; //累加
			 System.out.println("b1:"+b1);


			 //面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
				short s=1;
					s =(short)(s+1);

				short s1=1;
				      s1+=1;


				System.out.println("-----------------------------------");
					  	int a = 10;
						int b = 10;
						int c = 10;

						a = b++;
						c = --a;
						b = ++a;
						a = c--;

				System.out.println("a:"+a);
				System.out.println("b:"+b); 
				System.out.println("c:"+c);
	


	}
}

运行结果:
num:100
-----------------------------------
b1:-126
-----------------------------------
a:9
b:10
c:8

2、逻辑运算符

(1)逻辑运算符的应用,观察程序结果
class  LJYSF{
	public static void main(String[] args) {
		
		//逻辑运算符: | & ^  ||  && !
		//A:逻辑运算符有哪些
		//	&(并且) , |(或者) , !(非) , ^(异或) , &&(短路与) , ||(短路或)
		//逻辑运算符的运算结果是布尔类型

		int a=20;
		int b=10;
		boolean r=a>10&b>20&a<b;
				r=a>b&true;
				r=false&false;
				r=true&false;
				r=false&true;
				r=true&true;
				
				r=a*2-b*3>100|a<100;
				r=true|false;
				r=false|true;
				r=false|false|true;
				r=!true;
		System.out.println("r:"+!r);

		System.out.println("----------------------------------------");
		
		//^ 运算规则 相同为false 不同为true
		boolean bb=true ^ true;
        System.out.println("bb:"+bb);
		          bb=false ^ false;
				
        System.out.println("bb:"+bb);
			      bb=true ^ false;
				
        System.out.println("bb:"+bb);
				bb=false ^ true;
        System.out.println("bb:"+bb);
	}
}


结果:
r:true
----------------------------------------
bb:false
bb:false
bb:true
bb:true
(2) & && | || 的区别:在最终运算结果上没有区别,只是在运算效率上有区别
class LJYSF2 {
	public static void main(String[] args) {
			//& 和 && 的区别	
			//boolean r=a>5&++b>=21;  
			// & 他两端的表达式一定都会执行
			// && 当左端为false时 右端就不执行 只有左端为true 右端还是得要去执行
			
			int a=10;
			int b=20;
			boolean r=a>5&&++b>=21; 
	     	System.out.println("r:"+r);
		    System.out.println("b:"+b);

	        //| 和 ||  的区别
			//boolean r1=c>5|++d>=21;   
			// | 他的两端都需执行
			// || 只要左端为true了,右端的表达式,就不执行,只有左端为false了右端还得去执行
			int c=10;
			int d=20;
			boolean r1=c<5||++d>=21;
			System.out.println("r1:"+r1);
			System.out.println("d:"+d);
	}
}


结果:
r:true
b:21
r1:true
d:21

3、关系运算符

(1)位运算符、<<、>>
class  WYSF{
	public static void main(String[] args) {
		//位运算符 	&(与),|(或),^(异或) , ~(按位取反) , <<(左移) ,>>(右移) ,>>>(无符号右移)
		//位运算符是直接对补码进行运算的,运算效率比较高
		// &(与),|(或),^(异或)  两端是数值类型,那就是位运算符   如果两端是布尔类型那就是逻辑运算符
		byte a=3;
		byte b=4;
	/*
		&:有0则0
		|:有1则1
		^:相同则0,不同则1
		  3 的补码
		  0  0000011  
      |   0  0000100
         -----------------------------------
          0  0000111 补码
	*/
		System.out.println(a&b);
		System.out.println(3|4);
		System.out.println(3^4);
		System.out.println(~3);
    /*
		A:案例演示
	<<:左移			空位补0,被移除的高位丢弃。
	>>:右移			被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,高位补1。
	>>>:无符号右移	被移位二进制最高位无论是0或者是1,空缺位都用0补。
	*/
			//0  0000011
		System.out.println(3<<2);  //把3左移2位
			//1   11  00000 补码  		  
		System.out.println(-3>>2); //把3右移2位
			//0   0  1  00000 
		System.out.println(-3>>>2); //把3右移2位
	}
}

---------- 运行Java程序 ----------
0
7
7
-4
12
-1
1073741823
(2) 位异或、<<、>>
class  WYSF2{
	public static void main(String[] args) {
		//^ 位异或的特点:一个数被另一个数位异或两次该数不变,自己跟自己位异或,结果是0
		int a=3;  // 0 0000011
		int b=4;  // 0 0000100

		System.out.println(a^b^b); 
		System.out.println(a^b^a);

		System.out.println(10^10); 
		System.out.println(100^100); 
		/*	
	    << : 把<<左边的数据乘以2的移动次幂
	    >> : 把>>左边的数据除以2的移动次幂
	   */
		System.out.println(5>>3);
		System.out.println(5<<3);
	}
}


---------- 运行Java程序 ----------
3
4
0
0
0
40

4、变量

(1)定义不同类型的变量
class  Variable{
	public static void main(String[] args) {
		//变量名规范,通用规范,变量名一般小写
		byte b=-128;
		byte a=127;
		short c=300;
		int d=10000;
		long num=200000000L; 
        //定义long类型的变量时,值的后面需要加上一个后缀,表明他是一个long类型的值
		float f=3.14F; 
        //定义float 类型时,值的后面必须加上后缀F 表示他是一个float类型的值
		double dd=2.2;
		boolean flag=true;
		boolean flag2=false;
		//字符型的值,必须用''单引号引起来的一个字符
		char ch='a';
		char ch2='我';
		System.out.println(b);
		System.out.println(a);
		System.out.println(c);
		System.out.println(d);
		System.out.println(num);
		System.out.println(f);
		System.out.println(dd);
		System.out.println(flag);
		System.out.println(flag2);
		System.out.println(ch);
		System.out.println(ch2);
	}
}

---------- 运行Java程序 ----------
-128
127
300
10000
200000000
3.14
2.2
true
false
a
我
(2)定义变量的一些注意事项
class  Variable2{
	public static void main(String[] args) {
		//1.在同一个作用域里面,不能定义两个同名变量
		//作用域:同一对{}大括号所括起来的范围
		//2.变量必须赋值,才能使用。
		int num=100;
	        num=200; //重新赋值
		int a=20;
			num=a; //重新赋值
		int b,c;
		b=20;
		c=30;
		int bb=100;
		System.out.println(num);
		System.out.println(b);
		System.out.println(c);
	}
}

---------- 运行Java程序 ----------
20
20
30
(3)类型的自动提升
class Variable3 {
	public static void main(String[] args) {
		//类型的自动提升(类型的隐式转换):当 byte short char 在参与数学运算时,会提升为int类型,如果还有long float double 类型的数据参与运算
		//则会相应地提升为long float double 类型  byte short char 之间不参与转换
		//整数默认是int类型,小数默认是double类型
		byte a=10;
		short b=20;
		long num=9000000000L;
		float f=0.1F;  //底数  指数
		double dd=3.2;
		double c=a+b+num+f+dd;
		System.out.println(c);
	}
}

---------- 运行Java程序 ----------
9.0000005152E9
(4) 类型的强制转换
class  Variable4{
	public static void main(String[] args) {
		byte a=10;
		byte b=127;
		//类型的强制转换:丢弃掉多余字节,所以会有可能发生精度损失问题
	    byte c=(byte)(a+b);
		System.out.println(c);
	}
}

---------- 运行Java程序 ----------
-119
class  Variable5{
	public static void main(String[] args) {
		byte d=(byte)130;
		System.out.println(d);

			//面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
			byte b1 = 3;
			byte b2 = 4;
            byte b3 =b1 + b2;
			//改为 byte b3 =(byte)(b1 + b2);
			//常量优化机制:他先算这两个常量的相加后的结果,在不在这个数据类型的范围 内,如果在,就不报错,如果不在就报错
			byte b4 = 3+4;
			System.out.println(b4);
	}
}

---------- 运行Java程序 ----------
-126
7
(5)字符参与运算
class  Variable6 {
	public static void main(String[] args) {
		//char 2个字节   655535
		char ch='a';  //97 GBK一个汉字占2个字节   UTF-8  一个汉字3个字节
		byte num=1;
		//字符参与运算,会去对照ASCII码表中这个字符的整数值
		// 'a' 97  'b' 97
		// 'A' 65  'B'  66
		//  '0' 48  '1' 49
		int r=ch+num;
		System.out.println(ch1);
	}
}

---------- 运行Java程序 ----------
97
发布了9 篇原创文章 · 获赞 0 · 访问量 189

猜你喜欢

转载自blog.csdn.net/weixin_42401546/article/details/103931673