JavaSE笔记02

基本数据类型转换(Conversion)

在Java程序中,不同的基本数据类型的值经常需要进行相互转换。Java语言所提供的七种数值类型之间可以相互转换,基本数据类型转换有两种转换方式:自动类型转换和强制类型转换。

1、自动类型转换(隐式类型转换)

自动转换

  • 取值范围小的类型自动提升为取值范围大的类型

基本数据类型的转换规则

小结:通过上面案例我们可以得出数据类型的转换关系(取值范围从小到大),如图所示:

2、强制类型转换(显示类型转换)

取值范围大的类型强制转换成取值范围小的类型

比较而言,自动转换是Java自动执行的,而强制转换需要我们自己手动执行。

转换格式:

数据类型 变量名 = (数据类型)被强转数据值;

(1)当把存储范围大的值(常量值、变量的值、表达式计算的结果值)赋值给了存储范围小的变量时,需要强制类型转换,提示:有风险,可能会损失精度或溢出

(2)boolean类型不参与

(3)当某个值想要提升数据类型时,也可以使用强制类型转换

3、特殊的数据类型转换

1、任意数据类型的数据与String类型进行“+”运算时,结果一定是String类型

System.out.println("" + 1 + 2);

2、但是String类型不能通过强制类型()转换,转为其他的类型

String str = "123";
int num = (int)str;//错误的
int num = Integer.parseInt(str);//后面才能讲到,借助包装类的方法才能转

运算符(Operator)

  • 表达式:用运算符连接起来的式子

  • 运算符的分类: 按照功能分:算术运算符、赋值运算符、比较运算符、逻辑运算、条件运算符...

“+”号的两种用法

  • 第一种:对于+两边都是数值的话,+就是加法的意思

  • 第二种:对于+两边至少有一边是字符串得话,+就是拼接的意思

自加自减运算

  • 其他变量放在一起使用或者和输出语句放在一起使用前++后++就产生了不同。

  • ++在前,先自加,后使用;

  • ++在后,先使用,后自加。

面试题1

public class LogicExer1{
	public static void main(String[] args){
		int x = 1;
		int y = 1;

		//x==2 ,x++  false  x = 2 左边为false
		//右边继续
		//++y  y==2  y=2  y==2成立  右边为true
		//false & true 结果false
		if(x++==2 & ++y==2){
			x =7;
		}
		System.out.println("x="+x+",y="+y);//x=2,y=2
	}
}

public class LogicExer2{
	public static void main(String[] args){
		int x = 1,y = 1;

		//x==2,x++  左边条件为false,x=2
		//因为短路与,右边不算
		//false && ? 结果是false
		if(x++==2 && ++y==2){
			x =7;
		}
		System.out.println("x="+x+",y="+y);//x=2,y=1
	}
}

public class LogicExer3{
	public static void main(String[] args){
		int x = 1,y = 1;

		//x==1,x++  左边为true,x=2
		//因为是逻辑与,右边继续  
		//++y, y==1  y=2 右边为false
		//条件true | false,最终为true
		if(x++==1 | ++y==1){
			x =7;
		}
		System.out.println("x="+x+",y="+y);//x=7,y=2
	}
}	

public class LogicExer4{
	public static void main(String[] args){
		int x = 1,y = 1;

		//x==1,x++  左边为true,x=2
		//因为是短路或,左边为true,右边就不看了
		//整个条件为true
		if(x++==1 || ++y==1){
			x =7;
		}
		System.out.println("x="+x+",y="+y);//x=7,y=1

	}
}

 面试题2

 

public class LogicExer5{
	public static void main (String []  args)  {
		boolean x = true;
		boolean y = false;
		short z = 42;
		
		//如果if((z++==42)&&(y==true))条件成立,执行z++,不成立,就不执行z++
		//左边的条件:z==42,z++  z==42成立,z++变成43
		//中间虽然是短路与,因为左边现在是true,右边还要看
		//右边 y==true   不成立
		//true && false 结果为false
		if((z++==42)&&(y==true))	z++;
	
		//左边为x=false,赋值  结果就为false
		//中间虽然为短路或,因为左边是false,右边继续看
		//++z,z==45  ++z变成44,z==45是否成立,不成立
		//false || false  结果为false
		if((x=false) || (++z==45))  z++;

		System. out.println("z="+z);//44
	}
}

class  Test4_2  {
	public static void main (String []  args)  {
		boolean x = true;
		boolean y = false;
		short z = 42;
		
		//如果if(y=true)条件成立,接着判断if((z++==42)&&(y==true))	z++;	
		//如果不成立,if((z++==42)&&(y==true))	z++;	不看的
		/*
		if(y = true)
				
		if((z++==42)&&(y==true))	z++;	
		
		if((x=false) || (++z==45))  z++;
		*/
		
		//标准
		//y=true赋值,y就被修改为true,if(true)成立
		if(y=true){
			//左边:z==42,z++  成立,z变成43
			//&&短路与,不满足短路的情况,右边继续
			//y==true 成立
			//true && true,结果为true
			if((z++==42)&&(y==true)){
				//z++变成44
				z++;
			}
		}
		//左边:x=false不成立
		//中间虽然是短路或,但是没满足短路的情况,右边继续
		//++z,z==45  ++z变成45,z==45成立
		if((x=false) || (++z==45)){
			//z++,变成46
			z++;
		}
		System. out.println("z="+z);//46
	}
}

条件运算符

  • 条件运算符格式:

条件表达式?结果1:结果2

运算符优先级

 

提示说明:

(1)表达式不要太复杂

(2)先算的使用()

大体的排序:算术-->位-->比较-->逻辑-->三元-->赋值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值