今天来看下Java数据类型知识点。
int num = 1;
这里的int就是整数类型的数据类型,属于基础数据类型。而num其实是一个标识符。
什么是标识符?
标识符是Java中用来给类、方法、变量等命名的名称。
标识符代表的这个数据,就和人的名字一样,你可以叫张三,也可以叫李四,而这里叫num。
数据类型中,标识符一般是跟着数据类型关键字的后面,空格隔开,以声明这个num是个整型int。
标识符命名也是有规则的,必须遵循以下规则:
-
- 标识符可以由字母(A-Z和a-z)、数字(0-9)、下划线(_)和美元符号($)组成。
- 标识符不能以数字开头。
- 标识符是大小写敏感的,即Variable和variable是不同的。
- 标识符不能是Java的关键字,例如int, class, if等(上篇说了怕混淆)。
- 标识符不能包含空格或任何除了字母、数字、$和_之外的特殊字符。
而一般我们在命名的时候,除了这些以外还要遵守另外一些规范,不过这些规范不会报错。
-
- 比如一般不用汉字来命名。
- 比如Java类名,一般要以大写字母开始,遵守驼峰命名法(就是首字母大写的方式,比如XingHua,ShuaiDiHeng)。
- 比如方法名,一般要以小写字母开始,也遵守驼峰命名法(xingHua,woAiNi)。
- 比如变量名,一般也和类名一样。
- 比如常量名,一般是全大写,并且以下划线_分割,如(XING_HUA)。
嗯,有一个叫《阿里巴巴开发者规范》的玩意,对这些都有定义,算是一种大家约定,便于阅读代码,有空看看养成编码好习惯。
继续来看数据类型
在Java中数据类型分为两种: 基础数据类型和引用数据类型。
第一种:基础数据类型
基本数据类型是Java语言预先定义好的数据类型,共有8种,包括:
1.整数类型:
-
- byte(取值范围:-128~127,)
- short(取值范围: -32,768~32,767)
- int(取值范围:-2^31~2^31-1 (-2,147,483,648~2,147,483,647))
- long(取值范围:-2^63~2^63-1),声明长整型变量时,需要在数值后面加上L或l。
整数的默认值都是0, long的要加个0L。
2.浮点类型:
-
- float(占用4字节(32位),取值范围:大约 -3.4 x 10^38~3.4 x 10^38,默认值: 0.0f),在声明浮点型变量时,需要在数值后面加上F或f。
- double(占用8字节(64位),取值范围:大约 -1.8 x 10^308~1.8 x 10^308,默认值: 0.0d)
注意浮点数类型由于计算机使用二进制表示小数,可能存在精度损失的问题。因此,在处理钱啊啥的需要高精度的场景时,应避免使用浮点数,而考虑使用BigDecimal类。就是有时候1被存成了 0.999999不完的9,又或者 0.0000不完的1。了解即可,我们以后会学Java自带的BigDecimal类来处理数字运算。
3.字符类型:
-
-
- char(取值范围: 0~65,535(Unicode码点),默认值: ‘u0000’ (null字符)
-
这个有意思哈,第一篇我们说Unicode码点字符包含了世界上所有的符号。中国汉字分布在Unicode的几个区间内,主要在以下两个主要区间:
-
-
- 基本汉字包含了最常见的汉字,包括简体和繁体中文,在Unicode码点范围是: U+4E00 到 U+9FFF 。
- 扩展ABCDEF区包含了一些不常用的汉字、部首和古汉字。
-
4.布尔类型:
boolean(取值范围: true或false。用于表示真或假的值。默认值:false)
代码练习下:
public class Study{
public static void main(String[] args) {
int a = 1;
double b = 1.2;
String s = "hello";
System.out.println("a:"+a);
System.out.println("b:"+b);
System.out.println("s:"+s);
}
}
基础数据类型中存的就是值,比如int a = 1,内存中存的就是1。
public class Study{
public static void main(String[] args) {
// 测试基础值传递
int num1 = 10;
int num2 = num1; // 将num1的值复制给num2,num2得到了num1值的一个副本
// 接下来改变了num2的值,num1的值不会受到影响,因为基础数据类型存的就是自己的值。
num2 = 20;
System.out.println(num1); // 输出 10
System.out.println(num2); // 输出 20
// 测试String类型引用传递
String str1 = "zhangsan";
String str2 = str1;
str2 = "lisi";// str1也不发生变化,因为String中特殊,每一个String在内存中都是一个不可改变的值
System.out.println("str1 :"+str1 );// zhangsan,str1 依然指向 "zhangsan"
System.out.println("str2 :"+str2 );// lisi
}
}
第二种就是引用数据类型
引用数据类型是指向对象实例的引用,主要包括类(Class)、接口(Interface)和数组(Array)类型。引用数据类型的默认值为null。
1.String
在Java中内置的字符串类String就是一个Java预定义的引用类型。
String str = "这是一个字符串";
String是个特殊的引用类型,字符串在内存中是不会改变的,每次定义都是一个,不可更改,比如定义了”zhangsan”,修改为”zhanger”。实际上会创建一个新的String对象,而不是修改原始对象。
str存储的就是指向 “这是一个字符串” 这个字符串的一个内存地址。
上面代码一起贴了!
2.接口
接口就比如集合List,定义一个字符串类型的集合
List<String> myStrList = new ArrayList<>();
以后细细研究这个,不急。
3.数组
数组是一种数据结构,用于存储固定数量的元素,这些元素必须是相同类型。数组是通过方括号[]来声明的。
int[] numbers = {1, 2, 3, 4, 5, 666};
注意上面int[]就规定了后面的{}中必须是整形int,不能有别的类型。
4.自定义类型
上面都是Java内置的预定义类型,我们也可以自定义类型,比如我们弄过一个动物类型并实例化了动物猴子:
// 定义动物类
class Animal{
private String name;
public Animal(){}
}
// 以Animal类,实例化一知猴子
Animal monkey = new Animal();
这个Animal就是我们自定义的引用类型,而monkey就是标识符。
这个monkey不像基础数据类型那样存储的是值,而存的其实是一个地址,代码参考上面的String,但是,它可不像String一样不可变,所以会存在引用传递引起值被更改的问题,后面我们学了类以后再研究哈。
变量
变量就是用来存储数据的一个标识符,变量可以在声明时初始化,也可以先声明后初始化。
// 先声明后初始化:
int number; // 声明一个整型变量number
number = 10; // 初始化变量number为10
String name; // 声明一个字符串变量name
name = "张三"; // 初始化变量name为"张三"
// 声明时初始化:
double pi = 3.14159; // 声明并初始化一个双精度浮点型变量pi
注意在Java中,变量必须先声明后使用,且必须在使用前初始化(赋值)。
Java中的变量有作用域,这意味着它们只在声明它们的块(如方法或代码块)中可见和可用。算了,不想说了,留着学完类以后和全局变量、局部变量结合作用域一起学吧。
今天知道声明变量要先用数据类型声明,然后初始化数据,再使用!
上面说来数据类型分为基础数据类型和引用数据类型两种,基础的是Java内置的那8个,各有各的区间和默认值。引用的话,内置了String,但是String特殊,是个不可变的字符串。另外还有数组和接口类型。最后说了用来存储数据的标识符:变量。
原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/78207.html