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
逻辑与或同按位与或是有一定区别的:
相同点是:都能参与逻辑运算,按位与或完全可以代替逻辑与或; – 区别是:按位与或可以参与位运算,逻辑与或只能参与逻辑运算, 逻辑与或可以“短路”,按位与或不能“短路”。 • 短路运算 – 作用运算符:逻辑与&&,逻辑或|| 如(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 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
}
}