[豪の学习笔记] JavaReStudy#02
变量
1 - 注意事项
变量表示内存中的一个存储区域[不同的变量,类型不同,占用的空间大小不同]
该区域有自己的名称[变量名]和类型[数据类型]
变量必须先声明,后使用
该区域的数据/值可以在同一类型范围内不断变化
变量在同一个作用域内不能重名
变量 = 变量名 + 值 + 数据类型
2 - 程序中+号的使用
当左右两边都是数值型时,则做加法运算
当左右两边有一方为字符串,则做拼接运算
运算顺序,是从左到右
System.out.println(100 + 98); //198
System.out.println("100"+ 98); //10098
System.out.println(100 + 3 + "hello"); //103hello
System.out.printin("hello"+ 100 +3); //hello1003
3 - 数据类型
基本数据类型
①数值型
Ⅰ.整数类型,存放整数(byte[1],short[2],int[4],long[8])
Ⅱ.浮点(小数)类型(float[4],double[8])
②字符型
char[2],存放单个字符
③布尔型
boolean[1],存放true,false
引用数据类型
①类class
②接口interface
③数组[]
4 - 整数类型
类型 | 占用存储空间 | 范围 |
---|---|---|
byte | 1字节 | -128~127 |
short | 2字节 | -32768~32767 |
int | 4字节 | -231~231-1 |
long | 8字节 | -263~263-1 |
Java各整数类型有固定的范围和字段长度,不受具体OS[操作系统]的影响,以保证java程序的可移植性
Java的整型常量(具体值)默认为int型,声明long型常量须后加'l'或'L'
Java程序中变量常声明为int型,除非不足以表示大数,才使用long
bit是计算机中的最小存储单位,是计算机中的基本存储单元,1byte = 8 bit
5 - 浮点类型
类型 | 占用存储空间 | 范围 |
---|---|---|
float | 4字节 | -3.403E38~3.403E38 |
double | 8字节 | -1.798E308~1.798E308 |
浮点数 = 符号位 + 指数位 + 尾数位
尾数部分可能丢失,造成精度损失(小数都是近似值)
与整数类型类似,Java 浮点类型也有固定的范围和字段长度,不受具体OS的影响
Java 的浮点型常量(具体值)默认为double型,声明float型常量,须后加'f’或'F',通常情况下,应该使用double型,因为它比float型更精确
浮点型常量有两种表示形式
十进制数形式:5.12 512.0f .512(必须有小数点)
科学计数法形式:5.12e2[5.12*10的2次方] 5.12E-2[5.12/10的2次方]
6 - Java API 文档
APl(Application Programming Interface,应用程序编程接口)是 Java 提供的基本编程接口(Java提供的类还有相关的方法),中文在线文档:https://www.matools.com
Java语言提供了大量的基础类,因此 Oracle公司也为这些基础类提供了相应的API文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法
7 - 字符类型
字符类型可以表示单个字符,字符类型是char,char是两个字节(可以存放汉字),多个字符我们用字符串String
字符常量是用单引号(‘ ’)括起来的单个字符。例如:char c1 = 'a';char c2 = '中';char c3 = '9'
Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。例如:char c3 = ‘\n’;
在Java中,char的本质是一个整数,在输出时,是unicode码对应的字符。可以直接给char赋一个整数,然后输出时,会按照对应的unicode 字符输出[97 --> a]
char类型是可以进行运算的,相当于一个整数,因为它都对应有Unicode码
8 - 字符编码表
①ASCII:一个字节表示,一共128个字符,实际上一个字节可以表示256个字符,只用了128个
②Unicode:固定大小的编码,使用两个字节表示字符,字母和汉字都是占用两个字节,有点浪费空间
③utf-8:大小可变的编码,字母使用一个字节,汉字使用三个字节
④gbk:可以表示汉字,而且范围广,字母使用一个字节,汉字使用两个字节
⑤gb2312:可以表示汉字,gb2312 < gbk
⑥big5码:繁体中文,台湾,香港
ASCII
上个世纪60年代美国制定,ASCII码一共规定了128个字符的编码,只占用了一个字节的后面7位,最前面的1位统一规定为0
一个字节可以表示256个字符,但是ASCII码只用了128个字符
缺点:不能表示所有字符
Unicode
将世界上所有的符号都纳入其中,每一个符号都给予一个独一无二的编码,使用Unicode没有乱码的情况
2^16 = 65536,所以最多编码是65536个字符
编码0~127的字符是与ASCII的编码一致的,如 ‘a’ 在ASCII码是0x61,在Unicode码是0x0061,都对应97
缺点:一个英文字母和一个汉字都占用2个字节,对于存储空间来说是浪费
UTF-8
是在互联网上使用最广的一种Unicode的实现方式(改进)
是一种变长的编码方式,它可以使用1-6个字节表示一个符号,根据不同的符号而变化字节长度
使用大小可变的编码,字母占1个字节,汉字占3个字节
9 - 布尔类型
布尔类型也叫boolean类型
数据只允许取值true和false,无null,占用一个字节
10 - 基本数据类型转换
当java程序在进行赋值或运算时,精度小的类型自动转换为精度大的数据类型
char < int < long < float < double
byte < short < int < long < float < double
有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算
当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换
(byte,short)和 char之间不会相互自动转换
11 - 强制类型转换
自动类型转换的逆过程,将容量大的数据类型转换成容量小的数据类型,使用时要加上强制转换符(),但可能造成精度降低或溢出
int num = (int)1.9;
System.out.println(num);
当进行数据的大小从大到小,就需要使用到强制转换
强转符号只针对最近的操作数有效,往往会使用小括号提升优先级
char类型可以保存int的常量值,但不能保存int的变量值,需要强转
byte,short,char类型在进行运算时,当作int类型处理
12 - 基本数据类型和String类型的转换
基本类型转String类型
语法:基本类型的值 + “ ”
int n1 = 100;
float n2 = 1.1f;
double n3 = 3.4;
boolean b1 = true;
String str1 = n1 + "";
String str2 = n2 + "";
String str3 = n3 + "";
String str4 = b1 + "";
String类型转基本数据类型
通过基本类型的包装类调用parseXX方法即可
Integer.parseInt("123");
Double.parseDouble("123.1");
Float.parseFloat("123.45");
Short.parseShort("12");
Long.parseLong("12345");
Boolean.parseBoolean("true");
Byte.parseByte("12");
在将String类型转成基本数据类型时,要确保String类型能够转成有效的数据,比如我们可以把"123"转成一个整数,但是不能把"hello"转成一个整数
如果格式不正确,就会抛出异常,程序就会终止
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?