Java基础语法
基本数据类型
- java中的数据类型分两大类:
- 基本的数据类型:8种
- 数值型:
- 整形:byte、short、int、long
- 浮点型:double、float
- 字符型:char
- 布尔型:boolean
- 引用的数据类型:类、接口、注解、枚举、数组
- 数据都是存放在内存中,Java内存大体可以分为堆、栈、常量池、方法区
| 堆 | 栈 | 方法区 |
|---|
| 运行时数据区 | 存取速度快 | 用来存储类型信息 |
| 运行时动态分配内存 | 数据可以共享 | 常量池 |
| 自动垃圾回收 | 数据大小和生命周期必须确定,不够灵活 | 用来存储某类型的常量信息 |
| 存取速度较慢 | | |
- 每种数据类型在内存中占有不同的长度;
• 计算机存储设备的最小信息单元叫“位(bit)”,又称之为“比特位”;
• 连续的8个位成为1个“字节(byte)”;
• 操作系统分配内存最少1个字节,即8 个位,而不是1个位;
• 长度越长,所表示的范围就越大;
• 每种数据类型在内存中占有不同的长度;
• 计算机存储设备的最小信息单元叫“位(bit)”,又称之为“比特位”;
• 连续的8个位成为1个“字节(byte)”;
• 操作系统分配内存最少1个字节,即8 个位,而不是1个位;
• 长度越长,所表示的范围就越大;
| 类型 | 长度(位) | 长度(字节) | 表示范围 |
|---|
| byte | 8位 | 1字节 | -128~127 |
| short | 16位 | 2字节 | −215~215−1 |
| int | 32位 | 4字节 | −231~231−1 |
| long | 64位 | 8字节 | −263~263−1 |
| float | 32位 | 4字节 | -3.403E38~3.403E38(3.40292347*10的38次方) |
| double | 64位 | 8字节 | -1.798E308~1.798E308(1.798*10的308次方) |
| char | 16位 | 2字节 | 0~26−1,表示一个字符,如(‘a’,‘A’,‘0’,‘中') |
| boolean | 8位 | 1字节 | 逻辑常量只有两个值true与false |
- 基本的数据类型的默认值
| 类型 | 默认值 |
|---|
| byte | 0 |
| short | 0 |
| int | 0 |
| long | 0 |
| float | 0.0 |
| double | 0.0 |
| char | ‘’ 空字符(\u0000) |
| boolean | false |
- 代码检验基本数据类型的默认值
public class Test1 {
static int num;
static byte num2;
static short num3;
static long num4;
static float num5;
static double num6;
static char num7;
static boolean flag;
public static void main(String[] args) {
System.out.println("int类型的默认值: "+num);
System.out.println("byte类型的默认值: "+num2);
System.out.println("short类型的默认值: "+num3);
System.out.println("long类型的默认值: "+num4);
System.out.println("float类型的默认值: "+num5);
System.out.println("double类型的默认值: "+num6);
System.out.println("char类型的默认值: "+num7);
System.out.println("boolean类型的默认值: "+flag);
}
}
- 不同的基本数据类型之间可以进行转换;
• 从表示范围小的类型转换为表示范围大的类型,可以直接转换,称为隐式转换;
• 从表示范围大的类型转换为表示范围小的类型,需要强制转换,称为显式转换;
• 数值类型和boolean类型之间就不能转换;强制也不可以;
public class Test2 {
public static void main(String[] args) {
int num=10;
double num2=num;
System.out.println("num="+num);
System.out.println("num2="+num2);
double num3=4.5;
int num4=(int)num3;
System.out.println("num3="+num3);
System.out.println("num4="+num4);
}
}
- • 用“=”可以为任何一种基本数据类型的变量赋值;
• 赋值时主要不要超过表示范围,否则将出现编译错误;
• char类型使用''引用单个字符赋值;也可以使用非负整数(ASCII码)进行赋值;
了解:ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符。
- 如果是整数,默认是int类型
如果是小数,默认的double类型
57 是int , 4.5 是double
• 小数默认是double类型;
• 使用f/F后缀显式表示float类型;使用d/D后缀显式使用double类型;
- 可以使用==、!=、>、<、>=、<=对基本数据类型的数值进行比较运算;
- 练习:比较1.0d和1.0f是否相等,0.3d和0.3f是否相等。
public class Test3 {
public static void main(String[] args) {
double d1=1.0d;
float f1=1.0f;
System.out.println("d1==f1吗? "+(d1==f1));
System.out.println("d1!=f1吗? "+(d1!=f1));
double d2=0.3d;
float f2=0.3f;
System.out.println("d2==f2吗? "+(d2==f2));
System.out.println("d2!=f2吗? "+(d2!=f2));
}
}
- 基本的数据类型和引用的数据类型(绝大多数情况)
| 基本数据类型 | 引用数据类型 |
|---|
| 存放位置 | 栈内存 | 地址(引用)存在栈内存,内容存在堆内存 |
| 赋值方式 | 用=直接赋值 | 用new创建对象赋值 |
| String和Integer都是引用的数据类型 | |