JAVASE-day02

一.变量

1.1三要素

	 数据类型,变量名,初始化值
	 举例:int a = 10;
	 			int a;

1.2. 变量的数据类型

	基本数据类型:(四类八种)
					整数类型	数据类型	字节数
								byte			1	
								short			2
								int				4
								long			8
					浮点类型	float			4
								double			8
					字符类型	char			2
					布尔类型	boolean			1
					
	引用数据类型:	类、接口、数组

1.3 数据类型转换

byte,short,char三者之间不转换,一旦参与运算默认提升 int—>long—>float—>double

int m = 3 ;
byte b = 4 ;
//输出
//System.out.println(m+b) ;  //b变量类型 byte---->int类型

//使用int类型接收
int l = m + b ; //b变量---->先提升为int类型,在进行相加
System.out.println(l) ; //int类型的7
System.out.println("---------------------");

//byte k = m + b ; // =号的右边计算的结果是一个int类型,int类型的变量赋值给byte类型的变量,小容量赋值给大容量,编译报错 (编译报错!)
byte k = (byte)(m + b); //int类型强制转换成byte类型后,编译正确

1.4. 练习题

练习题1
	以下代码编译能通过吗?为什么?如何解决?
short s = 1;
int y = 3;
short z = s +y;
答:编译不通过,Java存在默认类型提升,s+y最终的类型为一个int类型,使用范围小的数据类型(short)接收范围大的数据类型(int),是不行的。
解决方法:强制类型转换
short z = (short)(s+y);
练习题2
思考题1:请问下面这个有没有问题
		double d = 12.345;
		float f = d;
		
思考题2:看看下面两个定义有没有区别呢?
	float f1 = (float)12.345;
	float f2 = 12.345f;
double d = 12.345;  //浮点类型默认类型:double d = 12.345
//float f = d; 	//本身有问题,float类型无法接收double类型的数据,需要强制类型转换
float f = (float)d; //正确写法
		
		
float f1 = (float)12.345;  //f1变量是float类型,12.345默认double类型, (将double类型的数据强制转换为float)
float f2 = 12.345f;//f2变量是float类型,12.345f本身就是一个float类型的变量
练习题3
	byte b1=3,b2=4,b;
	b= b1 + b2;
	b= 3 + 4;
	b = 123+124;
	哪句是编译失败的呢?为什么呢?
	
	————————----—分割线———————————————
	
	考点----->变量相加和常量相加
	变量相加:看变量的数据类型,而且最终将变量值赋值的时候,也是需要考虑数据类型!
	
	byte,short,char三者不转换,参与运算(重点)会默认提升int类型
	
	常量相加:先相加,然后看相加后的结果值是否在当前接收类型的范围内,如果在,可以使用,不在,报错了!
	//定义三个变量
	byte b1=3,b2=4,b;
	//b = b1 + b2 ;  // b1的byte类型---->int类型  b2的byte类型--->int类型
					//b是一个byte类型,没有办法接收int类型,编译不通过了
	
	//解决方案:强制类型转换
	//格式:目标数据类型  变量名 =(目标数据类型)初始化值;
	b = (byte)(b1+b2) ;
	System.out.println(b) ;  //7
	
	byte c;
	c = 3 + 4 ; //两个常量 = 7  byte类型的范围:-128~127
	//c = 123 + 124; // 不兼容的类型: 从int转换到byte可能会有损失
	System.out.println(b);
练习题4
byte b = 130 ; 
有没有问题,如果有问题,如何解决呢?


有问题,byte类型的范围:[-128~127]
解决方案:强制为byte类型
//byte b = 130 ; //不兼容的类型: 从int转换到byte可能会有损失
//强制类型:
byte b = (byte)130;
System.out.println(b) ;//-126
/*
8421码
	1	1	1	1	1	1	1	1	二进制
	128 64  32  16  8   4   2	1   十进制固定值

130:十进制------->130的二进制数据

130 = 128+2

最高符号位	数值位
0			0000000	00000000	00000000	10000010				原码
0			0000000 00000000    00000000    10000010				反码
0			0000000 00000000    00000000    10000010				补码

byte b = (byte)130; //计算机底层是用补码进行运算的
			1个字节
					10000010				补码------>反码---->原码
			
			最高符号位			数值位
			1						0000010		(补码)
										 -1
			----------------------------------
			1						0000001		(反码)
			1						1111110		(原码)
			
		=	
			-						64+32+16+8+4+2
			-						126
*/

1.5 字符串运算(之前理解错了,要掌握)

字符串+任何数据=新的字符串数据

int a = 10 ;
int b = 20 ;
System.out.println("a:"+a+",b:"+b);

//"hello"+'a'= "helloa"
//"helloa"+1 = "helloa1"
System.out.println("hello"+'a'+1) ;//helloa1  
//'a'+1 = 97+1 = 98
//98+"hello" = "98hello"
System.out.println('a'+1+"hello") ;//98hello 

//"5+5="+5 = "5+5=5"
//"5+5=5" +5 = "5+5=55"
System.out.println("5+5="+5+5) ; //5+5=55 

//5+5=10
//10+"=5+5" = "10=5+5"
System.out.println(5+5+"=5+5") ; //10=5+5

二.运算符

2.1概念及分类

Java运算符:
			算术运算符
			赋值运算符
			比较(关系)运算符
			逻辑运算符(使用最多的)
			位运算符(了解)
			三元(三目)运算符
			
	
	算术运算符:
			基本的算术运算符:
				+,-,*,/(取整),%(模:求余)
			扩展的算术运算符 (重点)
				++,--

2.2使用

基本的数据类型:
float和double类型的变量在计算机中存储的都是近似值。

扩展的算术运算符 (重点):
		++,--
			
用法:
	1)单独使用
		总结:无论++或者--在数据的前面还是后面,都是对当前变量值进行自增1或者自减1!
	
	2)参与运算使用
		总结:
			1.如果++或者--在数据的前面,先自增1或者自减1,然后在参与运算!
			2.如果++或者--在数据的后面,先进行运算,在自增1或者自减1!
//1)单独使用
		//定义两个变量
		int x = 3 ;
		int y = 4 ;
		System.out.println("x:"+x) ;
		System.out.println("y:"+y) ;
		System.out.println("----------------------") ;
	//1.1):单独使用:++或者--在数据的后面
		//x ++ ;
		//y -- ;
		
	//1.2):单独使用:++或者--在数据的前面
		//++x;
		//--y;
		//System.out.println("x:"+x) ;
		//System.out.println("y:"+y) ;
		//System.out.println("----------------------") ;
		
//2)参与运算使用
	//2.1)如果++或者--在数据的前面:
		//两个变量
		int m = 3 ;
		int n = 4 ;
		
		//int a = ++m ;//先自增1,然后赋值
		//int b = --n ;//先自减1,然后在赋值
		
		int a = m++ ;//先赋值,在增1
		int b = n-- ;//先赋值,在减1
		
		
		System.out.println("m:"+m) ;//3	---->4			4
		System.out.println("n:"+n) ;//4----->3			3
		System.out.println("a:"+a) ;//4   //3
		System.out.println("b:"+b) ;//3   //4

2.3练习题

2.3.1练习题1
1:基本小题目
		int a = 10;
		int b = 10;
		int c = 10;
		a = b++;
		c = --a;
		b = ++a;
		a = c--;
		请分别计算出a,b,c的值x
int a = 10;
int b = 10;
int c = 10;
a = b++;		//a=10,b =11    c =10 
c = --a;		//a=9 ,b=11,c=9
b = ++a;        //a=10 ,b=10, c=9
a = c--;        //a=9, b = 10,c=8
System.out.println("a:"+a+",b:"+b+",c:"+c) ;
2.3.2练习题
2:比较复杂的题目
		int a = 4;
		int b = (a++)+(++a)+(a*10);
		请分别计算出a,b,
int x = 4;
		// 4 + 6 + 60
int y = (x++)+(++x)+(x*10) ; //70
System.out.println("y:"+y) ;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值