韩顺平java学习笔记(二)-- 变量章节

一、变量

1、概念

变量相当于内存中的一个数据存储空间的表示

2、使用的基本步骤

第一步:声明变量;
第二步:赋值;
第三步:输出。

3、使用的注意事项

1.变量表示内存中的一个存储区域[不同的变量,类型不同,占用的空间大小不同]。
2. 变量在该区域有自己的名称[变量名]和类型[数据类型]。
3. 变量需要先声明,后使用。
4. 该区域的数据/值可以在同一类型范围内不断的变化。
5. 变量在同一个作用域内不能重名。
6. 变量由数据类型+变量名+值组成。

二、程序中 + 号的使用

  1. 当左右两边都是数值型时,则做加法运算。
  2. 当左右两边有一方是字符串,则做拼接运算。
  3. 运算顺序,从左到右。

三、Java数据类型

在这里插入图片描述

1、基本数据类型

(1) 数值型

整型类型:存放整型。(byte[1]、short[2]、int[4](整数,占4个字节)、long[8])
在这里插入图片描述

①Java各整型类型有固定的范围和字段长度,不受具体OS的影响,使得java程序具有良好的可移植性。
②Java的整型常量默认int型,声明long型常量需后加’l’或‘L’
③java程序中变量常声明为int型,除非不足以表示大数,才使用long.
④bit:计算机中的最小存储单元。byte:计算机中基本存储单元,1byte=8bite.[二进制]

浮点小数类型:(float[4]、double[8](存放精度高一点得小数或者大一点的小数))
在这里插入图片描述

① 浮点数在机器当中的存放形式:浮点数 = 符号位 + 指数位 + 尾数位。
② 尾数部分可能为丢,造成精度损失(小数都是近似值)。
③ Java各浮点类型有固定的范围和字段长度,不受具体OS的影响,使得java程序具有良好的可移植性。
④ Java的浮点型变量(具体值,例如1.1或者1.2等)默认为double型,声明float型常量,要在常量后面加‘f’或者‘F’。
⑤ 浮点型常量的常用两种表示形式:
十进制形式:如5.12;512.0f;.512(相当于0.512)
科学计数法形式:5.12e2(5.12*10的2次方);5.12E-2(5.12/10的2次方)
⑥ 通常情况下,使用double型,因为它比float型更精确。
⑦ 注意判断是否相等的陷阱,若是直接赋值的两个小数,则可以直接判断是否相等;若是一个要机器计算的小数和一个直接赋值的小数进行判断是否相等就不行了(如2.7和8.1/3),因为机器计算当中会有对精度的不确定性,导致算出来的小数是近似值。

(2) 字符型(char[2])

1.字符型,用单引号(‘’)括单个字符,双引号引起的是字符串。
2. 允许使用转义字符’‘来将其后的字符转变为特殊字符型常量。例如 char b = ‘\n’,其中’\n’表示换行符。
3. 在Java中,char的类型输出默认为unicode码对应的字符,(int)字符输出unicode码对应的数字。
4. 字符类型可以直接存放一个数字。例如 char a = 97(输出的就是字母a,这是编码的概念),但是print出是一个字符。
5.字符存储:‘a’ >码值97 >二进制(1100001)>存储
读取:: 二进制(1100001)
>97 >‘a’>显示
6.ASCII表一个字符用一个字节表示,1个字节(Byte)等于8位(b)二进制,实际上一个字节可以表示256个字符,只用了128个
unicode编码表一个字符用两个字节表示

//举例
int n1 = 'a' + 10; //先通过unicode表算出总数,a对应的为97。
System.out.println(n1)   // 输出107,int类型就直接输出数字
char n2 = 'b' + 10;//char有一个规则,可以保存int常量,char+int->int,自动转换为精度高的int,因此n2为char类型的108
System.out.println((int)n2);//输出为108
System.out.println(n2);//char的类型输出默认为unicode码对应的字符,输出108对应的ASCll表对应的为小写l,因此输出l。

(3) 布尔型(boolean[1])
1.布尔类型表示boolean ,只允许取值true和false,无null,不可用0或非0的数来表示true和false.
2.boolean类型只占一个字节
3.适用于逻辑运算:if 条件控制语句;do-while循环控制语句;for循环控制语句。
在这里插入图片描述

2、引用数据类型

四、类的API文档

1.API文档是用来解释类是干啥的
2.如何寻找类?
直接检索包或者类
在这里插入图片描述

五、基本数据类型转换

1、自动数据类型转换

介绍:在进行赋值或者是运算时,精度小 的类型自动转换为精度大的数据类型。
规则:在这里插入图片描述
举例:

int a = 'c';//ok
double d = 80;//ok

注意和细节:
在这里插入图片描述
细节1:有多种类型混合计算时,系统首先自动将所有数据转换为容量大的那种数据类型。

int n1 = 10float d1 = n1 + 1.1;//错误,因为1.1默认为double,所以相加后结果为double
double d1 = n1 + 1.1;//对
float d1 = n1 + 1.1F;//对,结果为float

细节2:当把精度大的数据类型赋给精度小的数据类型,就会报错,反之就会进行类型转换。

int n2 = 1.1;//错误,double不能转换为int

细节3:(byte,short)和char之间不会相互自动转换,当把具体的数值赋给byte时,(1)先判断是否在byte范围,如果是就可以转换

byte b1 = 10;//对,-128~127
int n2 = 1;
byte b2 = n2;//错误,如果是变量赋值,判断类型
char c1 = b1;//错,byte不能转换称char

细节4:byte,short,char三者可以计算,计算时首先转化为int类型

byte b2 = 1;
byte b3 = 2;
short s1 = 1;
short s2 = b2 + s1;//错,b2+s1 =>int
int s2 = b2 +s1;//对,b2+s1 =>int
byte s2 = b2 +s1;//错。int不能赋值给byte

细节5:boolean不参与转换
细节6:自动提升原则:表达式结果的类型自动提升为操作数中最大的类型。

byte b4 = 1;
short s3 = 100;
int num200 = 1;
float num300 = 1.1F;
int num500 = b4 + s3 + num200 + num300;//float->int

2、强制数据类型转换

√ 介绍:它是自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符(),但可能造成精度降低或者溢出

int n1 = (int)1.9;
System.out.println("n1=" + n1);//精度降低

int n2 = 2000;
byte b1 = (byte)n2;
System.out.println("b1=" +b1);//精度溢出

√ 细节:1.数据类型大->小,需要强制转换。
2.强制转换只针对最近的操作数有效,使用小括号则可以一起转换

int x =int10*3.5+6*1.5; //错,因为+后面是double类型,前面是int型,不能转int
int y = (int)(10*3.5+6*1.5);//对,整体都转化为了int
System.out.println(y);

3.char类型可以保存int的常量值,但不能保存int的变量值,需要强转
在这里插入图片描述
4.byte和short在进行运算时,当作int类处理

练习题(判断数据类型转换)

1.short s = 12;//对,12在short内,因此可以赋值。对于赋值,如果常数赋值就判断是否
//在类型内,如果变量赋值(包括直接赋值和加减等运算)就判断类型是否小于要赋值的类型的精度。
s = s-9;//错误,进行运算时会整体转为精度较高的那一类,9为int,因此结果为int
2.byte b = 10;//对,属于-128~127
b =b + 10;//不对,byte+int->int
b = (byte)(b+10);//对,类型相同了
3.char c = 'a';//对
int i = 16;//对
float d = .314F;//对
double result = c + i + d;//对,结果最终转为float型
4.byte b = 16;//对
short s = 14;//对
short t = s +b;//错,结果为int型

3、基本数据类型和String类型的转换

√ 介绍
基本数据类型->string :将基本类型的值+""

int n1 = 100;
float f1 = 1.1F;
double d1 = 4.5;
boolean b1 = true;
String s1 = n1 + "";  //int->string
String s2 = f1 + "";//float->string
String s3 = d1 + "";//double->string
String s4 = b1 + "";//boolean->string
System.out.println(s1 + " "+s2+" " +s3+ " "+s4);//输出为具体的数

string ->基本数据类型
通过基本类型的包装类调用parseXX方法即可

String s5 = "123";
int num1 = Integer.parseInt(s5);
double num2 = Double.parseDouble(s5);
float num3 = Float.parseFloat(s5);
long num4 = Long.parseLong(s5);
byte num4 = Byte.parseByte(s5);
boolean num4 = Boolean.Boolean("True");

string->char是指把字符串的第一个字母得到

//解读 s5.charAt(0)得s5中的第一个字符
System.out.println(s5.charAt(0));

√ 细节

  1. string->基本数据类型,要确保可以有效转化,例如"123"->123,但是"hello"就无法转换为数字。

4、本章作业

1.分别输出

String book1 = "天龙八部";
String book2 = "笑傲江湖";
System.out.println(book1 + book2);//天龙八部笑傲江湖
//String类型使用+是直接拼接,就算是数字也不会相加计算,只会拼接
``  `
```java
Char c1 = '男';
Char c2 = '女';
System.out.println(c1 + c2);// 得到 男 字符码值 + 女 字符码值
Char c1 = '男';
Char c2 = '女';
System.out.println(c1 + c2);// 得到 男 字符码值 + 女 字符码值
String name = "jack";
int age = 20;
double score = 80.9;
System.out.println("姓名\t年龄\t成绩\t"+);// 得到 男 字符码值 + 女 字符码值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值