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文件流
推荐阅读