Java第2章:变量和运算符

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

image.png

####逻辑与或同按位与或是有一定区别的:

相同点是:都能参与逻辑运算,按位与或完全可以代替逻辑与或; – 区别是:按位与或可以参与位运算,逻辑与或只能参与逻辑运算, 逻辑与或可以“短路”,按位与或不能“短路”。 • 短路运算 – 作用运算符:逻辑与&&,逻辑或|| 如(1):逻辑表达式:a>b && c>d 假设a>b 为false,c>d为true,那么整个表达式结果为false; 假设a>b 为false,c>d为false,那么整个表达式结果还为false; 可见,a>b的结果已经决定了整个表达式的结果,而后面的 c>d并不影响表达式的结果,可以说后半部分被“短路”了。 如(2):逻辑表达式: a>b || c>d 假设a>b 为true,那么后半部分表达式将被“短路”;

&&:
短路与(并且),两边都为真则为真,见false则false
如果第1个数为false,则发生短路(第2个数不走了)

||:
短路或(或者),有一边为真则为真,见true则true
如果第1个数为true,则发生短路(第2个数不走了)

! :
逻辑非(取反),非真则假,非假则真

&按位与
& 既是位运算符又是逻辑运算符,&的两侧可以是int,也可以是boolean表达式,当&两侧是int时,要先把运算符两侧的数转化为二进制数再进行运算,而短路与(&&)的两侧要求必须是布尔表达式。
注意 :&为真的条件是两侧表达式都为真,但是即使我们判断出左侧表达式的值为false,程序也还是要继续执行去判断右侧的表达式值的真假。

int i=2,j=4;
    System.out.println((++i==2)&(j++==4));//false
    System.out.println("i="+i+" ,j="+j);//3,5
    System.out.println(12&5);//与运算12=(1100)2  5=(0101) 1100+0101=0100 4
    System.out.println((2==2)&(4==4));//真真 true
    System.out.println((2==2)&(4!=4));//真假 false
    System.out.println((2!=2)&(4==4));//假真 false
    System.out.println((2!=2)&(4!=4));//假假 false

|按位或
(|)和(||)成立的条件是只要一侧表达式为真,结果就为真,在(|)运算时,无论左侧的表达式的值为真还是为假,都要判断右侧的表达式的值的真假,而(||)在运算时,只要左侧表达式的值为真,就不再判断右侧表达式的值了

###三元运算:

image.png

扫描二维码关注公众号,回复: 5078203 查看本文章

image.png

image.png

image.png

关系代码:

package com.neusoft.demo01;


/**
 * 变量
 * 可变的量,像一个容器一样,可以保存程序运行时产生的中间值。
 * 
 * 如何创建一个变量,创建变量有什么规范?
 * 语法:数据类型   变量名 = 初始值;
 * 变量名(类名)标识符,它是有一定规范的:命名规范:userName   user_name
        在符合了规则和规范的同时,还要保证标示符能够正确的传达它的含义。
   Java中常用数据类型(两大类):基本数据类型      引用类型
   1.基本数据类型(8种):整型(byte short int默认  long)  浮点类型(float  double默认)  字符型(char)  布尔类型(boolean)
 * 注意:变量一定要先初始化,然后才能使用。String不是基本类型,它是引用类型
 * 
 * 2.数据类型的转换
 * 
 * @author ttc
 *
 */
public class VarDemoTest {
	
	public static void main(String[] args) {
		//******************************变量以及数据类型**********************************start
		//		定义变量
		//		int id = 12;
		//		double salary = 3.14;
		//		char sex='m';
		//		String name = "张三";
		//		boolean isRight = false;//true
		//		float sal = 33.33F;
		//		
		//		System.out.println(id);
		//		System.out.println(salary);
		//		System.out.println(sex);
		//		System.out.println(name);
		//		System.out.println(isRight);
		//		System.out.println(sal);
		//******************************变量以及数据类型**********************************end
		
		//******************************基本数据类型转换(自动类型转换   强制类型转换)**********************************start
		//byte, short, int , long, 分别 1,2,4,8个字节     float,double,分别是4,8个字节;
		//1.自动类型转换
		int a = 12;
		double d = a;
		System.out.println(d);//12.0
		
		//2.强制类型转换
		float f = (float) 3.14;//3.14
		System.out.println(f);
		
		double dd = 12.34;
		int aa = (int) dd;
		System.out.println(aa);
		
		//3. +的用法(1.进行加法运算       2.可以用来连接)
		//任何数据类型与String类型连接,最终的结果都是String
		String ddd = a+"555"+dd;
		System.out.println(ddd);//double
		
		byte aaaa = 12;
		byte bbbb = 12;
		int cccc  = aaaa+bbbb;
		System.out.println(cccc);
		
		//******************************基本数据类型转换**********************************end
		
		//******************************基本运算符**********************************start
		//算术运算符 + - * / % ++ --
		int aaa = 0;
		int bbb = aaa++;
		System.out.println("bbb="+bbb);
		int ccc = ++aaa;
		System.out.println("ccc="+ccc);
		int result = (aaa++)+(++aaa)+(++aaa)+(aaa++);//(aaa++)=0 aaa=aaa+1 (++aaa)=2  (++aaa)=3 (aaa++)=3 aaa = aaa+1
		System.out.println(result);
		
		//赋值运算符 =    复合赋值运算符  x+=y(x = x + y)   x-=y(x = x-y)  x/=y x = x/y)   x*=y(x = x*y)   x%=y(x = x%y)
		
		//关系运算符:所有的关系运算的结果都是boolean型的    > >= < <= != ==
		
		System.out.println(4>3);
		System.out.println(4==4);//注意:==与=的区别
		
		//逻辑运算符:参与逻辑运算的都是boolean值,其结果也是boolean值;&&与  ||或  !非
		//		  a    &&(&位与)   b      结果        a   ||(|位或)   b      结果               !      结果
		//		true       true    true      true     true    true    !true   false
		//		true       false   false     true     false   true
		//		false      true    false     false    true    true
		//		false      false   false     false    false   false
		
		boolean a1 = true;
		boolean b1 = false;
		
		boolean c1 = a1 && b1;
		System.out.println(!c1);
		//逻辑与和逻辑 或的操作都是短路的,拿逻辑与为例,如果参与运算的前面表达式是false的话,那么就不会计算后面的表达式,结果直接就是false;
		//(4>7)&(3<2)-------false  两个表达式都需要判断
		//注意:&&与&的区别
		
		
		//?  : 运算符(三元): 唯一的能进行逻辑分支运算的运算符,唯一的一个三元运算符
		//语法:X = (boolean表达式)?值1 :值2; 如果boolean表达式的值是true,则返回值1,否则返回值2;
		int x = (4>3) ? 1 : 2;
		System.out.println(x);
		//******************************基本运算符**********************************end
	}
}

猜你喜欢

转载自blog.csdn.net/qq_30225725/article/details/86653112