java显式转换和隐式转换 实例 java的隐式转换_java 左边补0


Java的类型转换


隐式类型转换:

在Java中,向数值类型和字符类型的变量中保存数据的时候,如果要保存的数据的大小,没有超过变量空间的存储大小,JVM就会自动将要保存的数据的类型转换为变量的类型,叫做隐式类型转换


java显式转换和隐式转换 实例 java的隐式转换_运算符_02


java显式转换和隐式转换 实例 java的隐式转换_java 左边补0_03


java显式转换和隐式转换 实例 java的隐式转换_数据_04


强制类型转换

在Java中,将占用空间大的数据向取值范围小的变量中保存时,因为变量空间不足,所以不能直接存放,需要使用强制类型转换。

注意:强制类型转换有可能造成数据损失,使用时需要格外注意!

强制转换格式:(数据类型)(被转数据);


java显式转换和隐式转换 实例 java的隐式转换_java 左边补0_05


java显式转换和隐式转换 实例 java的隐式转换_java显式转换和隐式转换 实例_06


练习:

以下代码编译运行有没有问题?为什么?


class Test
{
	public static void main(String[] args) 
	{
		byte a = 100;
		byte b = a + 1;//这行编译出问题,因为a是变量;使用强制类型转换即可改正;
		System.out.println(b);
	}
}


java显式转换和隐式转换 实例 java的隐式转换_数据_07



运算符

算术运算

Java中的算术运算符和生活中的数学运算基本相似。

算术运算符符号


java显式转换和隐式转换 实例 java的隐式转换_运算符_08


java显式转换和隐式转换 实例 java的隐式转换_运算符_09


注意:

  1. 在使用算术运算时需要注意运算两侧类型:当两侧类型不统一时,运算结果和较大类型保持一致。
  2. 如果有字符类型的数据参与算术运算,JVM会将字符数据转换为编码表中对应的整数来参与运算。


java显式转换和隐式转换 实例 java的隐式转换_java 左边补0_10


java显式转换和隐式转换 实例 java的隐式转换_java 左边补0_11


java显式转换和隐式转换 实例 java的隐式转换_运算符_12



自加自减

自加(++)自减(--)运算

++:自增运算

如果运算符在运算的数据左边,就叫做左自增运算;如果在运算的数据右边,就叫做右自增运算;

例如:int a = 10;

++a 是左自增;a++ 是右自增;

左自增,直接对原有的数据进行+1;如果这一行代码没有结束,接下来参与其它运算的,是加一后的值;

右自增: 右自增运算,首先在内存中开辟一个临时空间,将原来的数据保存在这个临时空间中;然后对变量进行加一运算;

如果这一行代码没有结束,接下来参与其它运算的,是临时空间中的值(还没有加一的值);


java显式转换和隐式转换 实例 java的隐式转换_运算符_13


--:自减运算

也分为左自减和右自减,原理和自增运算一模一样,只是进行的是减一运算;

练习:

下列程序运行输出的结果是什么?为什么?


class Test
{
	public static void main(String[] args)
	{
		int a = 10;
		int b = 20;
		int c = (a++) + 3*(--a) + 5*(b--) - 4*(--b);
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
	}
}


java显式转换和隐式转换 实例 java的隐式转换_ide_14


java显式转换和隐式转换 实例 java的隐式转换_java显式转换和隐式转换 实例_15



字符串连接符

如果“+”左右两边至少有一边是一个字符串,他就是一个字符串连接符,可以将左右两边的结果拼接成一个大的字符串;


java显式转换和隐式转换 实例 java的隐式转换_数据_16


java显式转换和隐式转换 实例 java的隐式转换_java显式转换和隐式转换 实例_17


思考:

  1. System.out.println("5+5="+5+5);//打印结果是?
  2. 若要打印出“5+5”=10 ,上述代码怎么改?
  3. 下列程序运行输出的结果是什么?为什么?
class Test 
{
	public static void main(String[] args) 
	{
		System.out.println('A' + 'K' + "|" + 47);

		System.out.println('A' + "K" + '|' + 47);
	}
}


java显式转换和隐式转换 实例 java的隐式转换_java 左边补0_18


java显式转换和隐式转换 实例 java的隐式转换_java显式转换和隐式转换 实例_19



赋值运算符

可以将数据赋值给变量的运算符就是赋值运算符;= , +=, -=, *=, /=, %=

普通赋值运算符:=

作用:表示将符号右边的数据,保存到符号左边的变量中;


java显式转换和隐式转换 实例 java的隐式转换_java显式转换和隐式转换 实例_20


class Demo 
{
	public static void main(String[] args) 
	{
		int a = 3 ; //将3存储到左侧a空间中
		int b , c , d;
		b = c = d = a; // 将a空间中的值分别存放到d,c,b 空间中
	}
}


复合赋值运算符:

+=;-=;*=;/=;%=……

表示:

先将符号左右两边进行运算,然后将运算的结果赋值给左边的变量;

注意:赋值号和算数运算符的混合运算属于一个运算符,不能拆分。并且这个符号会完成自动强转动作。


java显式转换和隐式转换 实例 java的隐式转换_数据_21


思考:以下代码有什么区别?


class Demo 
{
	public static void main(String[] args) 
	{
		short s = 3; 
		s=s+2;
		s+=2;    
	}
}


说明:

s=s+2//编译失败,因为s会被提升为int类型,运算后的结果还是int类型。无法赋值给short类型。

s+=2//编译通过,因为+=运算符在给s赋值时,自动完成了强转操作。


java显式转换和隐式转换 实例 java的隐式转换_ide_22


java显式转换和隐式转换 实例 java的隐式转换_java显式转换和隐式转换 实例_23



比较运算符

运算符介绍

在生活中经常需要判断数据大小,相等不相等各种操作,在Java中同样也可以判断数据的大小。

比较运算符符号:

>: 大于

>=: 大于或等于

<: 小于

<=: 小于或等于

==: 恒等于,表示比较左右两边是否相等;

!=: 不等于,表示比较左右两边不相等;

注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。

注2:比较运算符“==”不能误写成“=” 。

注3:比较运算符不能多个连续一起使用;如 1 < a < 5 非法;

运算符使用演示


java显式转换和隐式转换 实例 java的隐式转换_java显式转换和隐式转换 实例_24


java显式转换和隐式转换 实例 java的隐式转换_ide_25



逻辑运算符

当需要判断某些数据符合某个区间,比如人的年龄符合某一范围等。发现使用比较运算没法完成。Java给我们提供另外一直机制,逻辑运算。逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。

逻辑运算符号:

逻辑运算符:用可于进行逻辑运算(就是对布尔型数据进行运算)的符号就是逻辑运算符;

& : 与

| :或

^ : 异或。

!:非。一元逻辑运算符;

&& 短路与 || 短路或

特点:

参与逻辑运算的数据都是布尔型数据;

逻辑运算的结果也都是布尔型数据;


java显式转换和隐式转换 实例 java的隐式转换_运算符_26



三元运算符

三元运算符,也称为三目运算符或问号冒号运算符。即有三个表达式参与的运算表达式。

三元运算符的格式:

接受运算结果的变量 = 布尔表达式 ? 表达式1 :表达式2;


java显式转换和隐式转换 实例 java的隐式转换_java 左边补0_27


注意:在三元运算符的左边,一定要有一个变量来接收运算的结果!


java显式转换和隐式转换 实例 java的隐式转换_ide_28


java显式转换和隐式转换 实例 java的隐式转换_运算符_29


三元运算符举例:

练习:根据给定的数字,在控制台输出奇数或者偶数?


java显式转换和隐式转换 实例 java的隐式转换_java显式转换和隐式转换 实例_30


练习二:使用三元运算符,求两个整数的最大数;


java显式转换和隐式转换 实例 java的隐式转换_运算符_31


作业:使用三元运算符,求三个整数中最大值、最小值;


java显式转换和隐式转换 实例 java的隐式转换_ide_32


位运算符(了解)

位运算:直接对二进制数位(0和1)进行操作的运算 符。

运算符符号:

双元位运算符:

<<:左移运算符 将运算数的二进制码整体左移指定位数,左移之后右边的空位使用“0”来补充,左边移出去的二进制数忽略不计。


java显式转换和隐式转换 实例 java的隐式转换_java显式转换和隐式转换 实例_33


java显式转换和隐式转换 实例 java的隐式转换_运算符_34


>>:右移运算符 将运算数的二进制码整体右移指定位数,右边移出去的二进制数忽略不计。 左边的空位使用“符号位”来补充:若是正数使用“0”补充;若是负数使用“1”补充;


java显式转换和隐式转换 实例 java的隐式转换_运算符_35


>>>:无符号右移运算符 将运算数的二进制码整体右移指定位数,右移之后的左边的空位使用“0”来补充

&:按位与 相同二进制数位上数值为1,结果为1,否则结果为0;


java显式转换和隐式转换 实例 java的隐式转换_数据_36


|:按位或运算,运算原则:相同二进制数位上数值为0,结果为0,否则结果为1;

^:按位异或,运算原则:参与运算的两个数相应位相同则结果为0,异号则为1;


java显式转换和隐式转换 实例 java的隐式转换_java 左边补0_37


使用按位异或运算,可以方便的实现两个数字的交换;

int a = 5, b = 7;

int c = a ^ b ;

a = c ^ a ; a = 7

b = c ^ a ; b = 5;


java显式转换和隐式转换 实例 java的隐式转换_java显式转换和隐式转换 实例_38


java显式转换和隐式转换 实例 java的隐式转换_数据_39