Java学习第五章数据类型转换和算数运算符

第五章 数据类型转换

5.1自动转换(隐式)

当数据类型不一样时会发生数据类型转换、
1.自动类型转换(隐式)
(1)特点:代码不需要特殊处理
(2)规则:数据范围从小到大

2.强制类型转换(显式)
/*自动类型转换*/
public class Demo01DataType{
	public static void main(String[] args){
		System.out.println(1024);//这就是一个整数,默认是int类型
		System.out.println(3.14);//这就是一个浮点数,默认就是double类型
		
		//左边是long类型,右边是默认的int类型
		//一个等号代表赋值,将右侧的int常量,交给左侧的long变量进行存储
		//int-->long,符合了范围从小到大的要求
		//这一行代码发生了自动类型转化
		long num1 = 100;
		System.out.println(num1);//100
		
		//左边是double类型,右边是float类型,
		//float-->double 符合了范围从小到大的要求,
		//这一行代码发生了自动类型转化
		double num2 = 2.5F;
		System.out.println(num2);//2.5
		
		//左边是float类型,右边是long类型,
		//float-->long 符合了范围从小到大的要求
		//这一行代码发生了自动类型转化
		float num3 = 30L;
		System.out.println(num3);//30.0
	}
}

5.2 强制类型转换(显式)

5.2.1 注意事项

/*
强制类型转换
1.特点:代码需要特殊格式处理,不能自动完成
2.格式:范围小的类型   范围小的变量名 = (范围小的类型)  	原本范围大的数据	

注意事项:
1.强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出。
2.byte/short/char 这三种类型都可以发生数学运算,例如加法“+”
3.byte/short/char 这三种类型在运算的时候先提升为int类型,然后再计算
4.boolean 类型不能发生数据类型转换

*/	
public class Demo02DataType{
	public static void main (String[] args){
		//左边是int类型,右边是long类型
		//long-->int,不是从小到大
		//不能发生自动类型转换
		//格式:范围小的类型   范围小的变量名 = (范围小的类型)  原本范围大的数据	
		int num = (int) 100L;	
		System.out.println(num);
		
		
		
		//long转换为int,数据溢出
		int num1 = (int) 6000000000L;  //超过int取值范围
		System.out.println(num1);//1705032704  实际数值 
		
		//double-->int . 强制类型转换
		int num3 = (int) 3.5;
		System.out.println(num3);//3   精度损失 小数位被舍弃
		
		char zifu1 = 'A'; // 这是一个字符型变量,里面是大写字母A
		System.out.println(zifu1 + 1); // 66 也就是大写字母A被当做65进行处理了
		//计算机底层会用一个数字(二进制)代表字符A  就是65	

		byte num4 = 40;
		byte num5 = 50;
		//byte + byte = int + int = int 	先把两个都变成int 然后再相加
		int result1 = num4 + num5;
		System.out.println(result1);//90
		
		
		short num6 = 60;
		//byte + short --> int  + int -->int
		//int 强制转换为short:注意必须保证逻辑上真是大小本不超过short 的范围,否则会发生数据溢出
		short result2 = (short) (num4 + num6);//100
		System.out.println(result2);
		
		
	}
}

ASCII码表:American Standard Code for Information interchange 美国信息交换标准代码

0-- 48
a–97
A–65

Unicode码表:万国码,也是数字和符号的对照关系,开头0-127部分和ASCII完全一样,但是从128开始包含有更多字符。

5.3 算数运算符-四则与取模运算

运算符: 进行特定操作的符号 例如  +;
表达式:用运算符连接起来的式子叫做表达式。例如20+5;
四则运算:
+ - * /

取模:%  只有对于整数的除法,取模运算符才有余数的意义

注意事项:
1.一旦运算当中有不同类型的数据,那么结果将会是数据类型范围大的那种。

public class Demo04Operator{
	public static void main(String[] args){
		//两个常量进行相加
		System.out.println(20 + 30);
		
		//两个变量相加
		int a = 10;
		int b = 20;
		System.out.println(a + b);
		
		//乘法
	
		System.out.println(a * 10);
		s
		//除法
		int x = 10;
		int y = 3;
		int result1 = x / y;
		System.out.println(result1);
		
		//取模

		int result2 = x % y;
		System.out.println(result2);
		
		//一旦运算当中有不同类型的数据,那么结果将会是数据类型范围大的那种。
		// inty + double --> double + double = double 
		double result3 = x + 2.5;
		System.out.println(result3);
		
	}	
		
}

5.3.1 加号的多种用法

四则运算当中的加号“+”常见的三种用法:
1.对于数值来说,那就是加法
2.对于字符char来说,计算之前char会被提升为int,然后再计算
3.对于字符串String(首字母大写,并不是关键字)来说,加号代表字符串连接操作。

任何数据类型和字符串进行连接的时候,结果都会变成字符串。

public class Demo05Plus{
	public static void main(String[] args){
		//字符串类型的变量基本使用;
		// 数据类型 变量名称 = 数据值;
		String str1 = "Hello";
		System.out.println(str1);//Hello
		
		System.out.println(str1 + "world");
		
		String str2 ="java";
		//String + int --> String + String -->String 
		System.out.println(str2 + 20);//java20
		
		//优先级问题
		System.out.println(str2 + 20 + 30 );//java2030
		System.out.println(str2 + (20 + 30) );//java50
		
	}
}

5.3.2 自增自减运算符

/*
自增运算符:++
自减运算符:--
基本含义:让一个变量加一或者减一
使用格式:写在变量名称之前,或者写在变量名称之后。例如num++ 或者++num
使用方式:
		1.单独使用:不和其他任何操作混合
		2.混合使用;和其他操作混合,例如与赋值混合,或者与打印混合
使用区别:
		1.在单独使用时,,前++和后++没有任何区别,也就是:++num和num++是完全一样的
		2.在混合使用的时候
		  如果是前++ 立刻加一,拿着加一后的结果进行运算
		  如果是后++ 用原来数值进行运算,然后加一
注意:只有变量才能使用自增自减运算符!
		
*/
public class Demo06Operator{
	public static void main(String[] args){
		int num1 = 10 ;
		System.out.println(num1);
		++num1;//单独使用,前++
		System.out.println(num1);//11
		num1++;//单独,后++
		System.out.println(num1);// 12 
		
		
		System.out.println("================");
		
		int num2 = 20;
		
		//混合使用,前++  ,先加一再使用
		System.out.println(++num2);// 21
		
		//混合使用,后++。先使用再加一		
		System.out.println(num2++);// 21
		System.out.println(num2);//22  使用完加一
		
			System.out.println("================");
		//和赋值混合使用;
		//先用后减
		int num3 = 40;
		int result1 = num3--;
		System.out.println(result1);//40
		System.out.println(num3);//39
		
		//先减后用
		int num4 = 20;
		int result2 = --num4;
		System.out.println(result2);//19
		System.out.println(num4);//19
		System.out.println("================");
		
		int x = 10;
		int y = 20;
		int result3 = ++x + y--;
		System.out.println(result3);//31
		System.out.println(x);//11
		System.out.println(y);//19
		
	}
}

5.3.3 赋值运算符

/*赋值运算符分为:
基本赋值运算符: 就是一个等号“=”,代表将右侧的数据交给左	侧的变量。
int a = 30;
复合赋值运算符:
+=  a += 3  相当于  a = a + 3;
-=  a -= 3  相当于  a = a - 3;
*=	a *= 3	相当于	a = a * 3;
/=	a /= 3	相当于	a = a / 3;
%=  a %= 3	相当于	a = a % 3;

注意事项:1.只有变量才能使用赋值运算符,常量不饿能进行赋值
		 2.复合赋值运算符其中隐含了一个强制类型转换
*/
public class Demo07Operator{
	public static void main(String[] args){
		int a = 10;
		 //a = a +  5
		 //a = 10 + 5  a 原来是10,现在重新赋值得到15
		 a += 5;
		 System.out.println(a);//15
		 
		 int b = 10;
		 //b = b % 3
		 //b = 10 % 3 
		 b %= 3; 
		 System.out.println(b);
		 
		 byte num = 30;
		 // num = num + 5
		 // num = byte + int
		 // num = int + int 
		 //	num = int 
		 //	num = (byte) int 复合赋值运算符其中隐含了一个强制类型转换
		 num += 5;
		 System.out.println(num);//35
		 
	}
}

5.3.4 比较运算符

比较运算符包括:
== 等于
< 小于
> 大于
<= 小于等于
>= 大于等于
!= 不等于
注意事项

  1. 比较运算符,是两个数据之间进行比较的运算,运算结果都是true 或者false。
  2. 如果进行多次判断,不能连着写,例如 1< x < 3 ,这样写是错误的。
public class Demo08Operator{
	public static void main (String[] args){
		System.out.println(10 > 5);//输出true
		int num1 = 10;
		int num2 = 25;
		System.out.println(num1 > num2);//false
		System.out.println(num1 >= 10);//true
		
		
		
	}
} 

5.3.4 逻辑运算符

/*
与 (并且)&&  全都是真 才是真 否则是假
或 (或者)||  其中一个为真 就为真,都是假才是假
非 (取反)!   本来是真,变成假,本来是假变成真
与 ,或  具有短路效果:如果根据左边已经可以判得最终结果那么右边的代码将不再执行,从而节省一定的性能。
注意事项:
		1.逻辑运算符只能用于布尔值
		2.与、或需要左右各自有一个Boolean值,但是取		反只要有唯一的一个Boolean值即可。
		3.与、或两种运算符,如果有多个条件,可以连续写。
	两个条件:条件A && 条件B
	多个条件:条件A && 条件B && 条件C
	即: 1 < x < 3  
	写成 int  x = 2 ;  
		1 < x  && x < 3
*/
public class Demo09Operator{
	public static void main(String[] args){
		System.out.println(true && false);//false
		
		System.out.println(3 < 4 && 10 > 5);//true
		
		System.out.println("==================");
		
		System.out.println(true || false);//true
		
		System.out.println(true );//true
		System.out.println(!true );//false
		
		int a = 10;
         // false && true   
		System.out.println(1 > 3 && ++a < 100 );//false
		System.out.println(a);//10
		
		int b = 20;
		// true || false
		System.out.println(3 < 4 || ++b < 100 );//true
		System.out.println(b);//20
		
	}
}

5.3.8 三元运算符

/*
一元运算符:只需要一个数据就能进行操作的运算符: 取反!  	、 自增++、 自减--
二元运算符:需要两个数据就能进行操作的运算符 :加法、赋值
三元运算符:需要三个数据就能进行操作的运算符

格式:
数据类型 变量名称 = 条件判断 ? 表达式A :表达式B
流程:
首先判断条件是否成立:
如果成立为true,那么将表达式A的值赋值给左侧的变量。
如果不成立为false。那么将表达式B的值赋给左侧的变量:
二者选其一
*/

注意事项:
必须同时保证表达式A和表达式B都符合左侧数据类型的要求

public class Demo10Operator{
	public static void main(String[] args){
		int a = 10;
		int b = 20;
	
		int max = (a > b ? a : b);
		
		System.out.println("最大值" + max);//20
		
		//int result = 3 > 4? 2.5 : 4; //写法错误 表达式A 不符合 左侧数据类型
		
		System.out.println(a > b ? a : b);//正确写法 20
		//a > b ? a : b //错误写法
		
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值