欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVASE-day02

程序员文章站 2024-01-21 18:58:10
...

一.变量

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) ;

上一篇: JavaSE_day02

下一篇: Java IO文件流