文章目录
变量(Variables)
- 变量的概念:
- 内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化
- 变量的构成包含三要素:数据类型、变量名、存储的值
- Java中的变量声明格式:数据类型 变量名 = 变量值
- 变量的作用:用于在内存中保存数据
- 使用变量注意:
- Java中每个变量必须先声明,后使用
- 使用变量名来访问这块区域的数据
- 变量的作用域(在同一作用域内不能声明两个同名的变量)
在Java中,变量的命名必须遵循以下规则:
- 变量名必须以字母,下划线或美元符号开头。
- 变量名可以包含字母、数字、下划线或美元符号。
- 变量名不能是Java关键字或保留字。
- 变量名区分大小写。
Java中有两种类型的变量:
- 实例变量:它们属于类的实例,每个类实例都有自己的实例变量。
- 静态变量:它们属于类本身,而不是类的实例。因此,所有类实例都共享静态变量。
Java变量支持的数据类型包括:
- 基本数据类型(Primitive Data Types):
- 数值类型:
- 整数类型:
- byte(字节型)
- short(短整型)
- int(整型)
- long(长整型)
- 浮点类型:
- float(单精度浮点型)
- double(双精度浮点型)
- 整数类型:
- 字符类型:
- char(字符型)
- 布尔类型
- boolean(布尔型)
- true
- false
- boolean(布尔型)
- 数值类型:
- 引用数据类型(Reference Data Types):
- 类(Class)
- 接口(Interface)
- 数组(Array)
- 枚举(enum)
- 注解(annotation)
基本数据类型指的是Java语言中的最基本数据类型,它们是原始类型,不能再进行细分,而引用数据类型则是指由程序员自定义的数据类型或Java语言已经定义好的类和接口类型。
在声明变量时需要指定变量的数据类型,而变量的数据类型指定了变量可以存储的数据类型。
在Java中,声明变量时需要指定变量的数据类型。下面是一个声明变量的例子:
int myNumber = 42;
在这个例子中,我们声明了一个名为myNumber
的变量,它的数据类型是int
,并将其赋值为42
。
总之,Java变量是用于存储数据的内存空间,每个变量都有一个特定的数据类型和命名规则,变量的数据类型指定了变量可以存储的数据类型。声明变量时需要指定变量的数据类型。
计算机存储单位换算如下:
- 1 字节(Byte)= 8 位(Bit)
- 1 千字节(KB)= 1024 字节
- 1 兆字节(MB)= 1024 千字节
- 1 吉字节(GB)= 1024 兆字节
- 1 太字节(TB)= 1024 吉字节
- 1 拍字节(PB)= 1024 太字节
- 1 艾字节(EB)= 1024 拍字节
例如,1 MB = 1024 KB,1 GB = 1024 MB,以此类推。
字节(Byte):计算机存储单位中的字节(Byte)指的是计算机内存中的基本存储单位,它是计算机的最小存储单元。通常情况下,一个字节包含8个二进制位(bit)。
位(Bit):计算机存储单位中的位(Bit)指的是计算机内存中的最小存储单位,每个位只能存储0或1两种状态。
数据类型详解
整型数据类型的使用
byte(字节型)、short(短整型)、int(整型)、long(长整型)
类型 | 占用空间 | 取值范围 |
---|---|---|
byte | 8位(1字节) | -128 ~ 127 |
short | 16位(2字节) | -32768 ~ 32767 |
int(常用) | 32位(4字节) | -2147483648 ~ 2147483647 |
long | 64位(8字节) | -9223372036854776000 ~ 9223372036854775999 |
byte num1 = 127;
short num2 = 1234;
int num3 = 12345; // 开发中没有特殊情况通常都声明为int类型。
long num4 = 233233L;
浮点类型数据类型的使用
float(单精度浮点型)、double(双精度浮点型)
类型名 | 占用空间 | 取值范围 |
---|---|---|
float | 32位(4个字节) | -3.4E38 ~ 3.4E38 |
double(常用) | 64位(8个字节) | -1.7E308 ~ 1.7E308 |
- float:单精度(尾数可以精确到7位有效数字。很多情况下精度很难满足需求。)
- double:双精度(精度是float的两倍。通常采用此类型。)
开发中如果需要极高的精度,需要使用BigDecimal类替换浮点型变量。
- Java浮点类型常量默认为double型 。
double num1 = 12.3;
float num2 = 12.3f;
字符类型数据类型的使用
char(字符型)
char
是Java中的一种数据类型,用于表示单个字符。它占用16位(2个字节)的存储空间,可以表示Unicode编码中的所有字符。在Java中,char
类型的变量必须用单引号括起来,例如:char c = 'A';
。- 除了单个字符,
char
类型还可以表示转义字符。例如,'\n'
表示换行符,'\t'
表示制表符(一个制表符位置代表8个空格),'\uXXXX'
(其中XXXX是一个4位十六进制数)表示Unicode编码中的字符。例如,'\u0058'
表示字符X
。 - 在Java中,
char
类型的变量可以和整数类型进行运算。例如,'A' + 1
的结果是66
,因为字符'A'
的Unicode编码是65
。 - 总之,
char
类型是Java中用于表示单个字符的数据类型,它占用16位存储空间,可以表示Unicode编码中的所有字符。char
类型的变量必须用单引号括起来,可以表示单个字符或转义字符。
更多Unicode编码字符的信息可以在以下页面中找到:
https://www.rapidtables.org/zh-CN/code/text/unicode-characters.html
char xxx = '\u0036'; //输出6
char yyy = 'a'; //输出a
布尔类型数据类型的使用
只有两个值 :true 、false
布尔类型常用于逻辑运算和条件判断,例如在if语句中判断条件是否成立,或者在while循环中判断循环是否继续进行。布尔类型只有两个值,true和false,可以用来表示某个条件是否成立。在Java中,布尔类型的变量可以用来存储这两个值中的任何一个,例如:boolean flag = true;
。
下面是一个判断一个数是否为偶数的例子:
public class Main {
public static void main(String[] args) {
int num = 10;
boolean isEven = (num % 2 == 0);
if (isEven) {
System.out.println(num + "是偶数");
} else {
System.out.println(num + "是奇数");
}
}
}
在这个例子中,我们声明了一个名为num
的变量,它的数据类型是int
,并将其赋值为10
。然后,我们声明了一个名为isEven
的布尔变量,它的值等于(num % 2 == 0)
。由于num
是10,因此(num % 2 == 0)
的值为true
,所以isEven
的值也是true
。最后,我们使用一个if语句来检查isEven
的值,如果它是true
,就输出num
是偶数,否则输出num
是奇数。
总之,布尔类型在Java中可以用来表示某个条件是否成立,例如在if语句中判断条件是否成立,或者在while循环中判断循环是否继续进行。布尔类型只有两个值,true和false,可以用来表示某个条件是否成立。
字符串类型的使用(String)
字符串类型在Java中用于表示一组字符序列,它可以包含任何Unicode字符。在Java中,字符串类型的变量必须用双引号括起来,例如:String str = "Hello, world!";
。
下面是一个使用字符串类型的例子:
public class Main {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = "world";
String str3 = str1 + ", " + str2 + "!";
System.out.println(str3);
}
}
在这个例子中,我们声明了三个字符串变量,分别是str1
、str2
和str3
。str1
和str2
的值分别是"Hello"
和"world"
,而str3
的值是str1
和str2
以及一个逗号和空格拼接起来的结果,即"Hello, world!"
。最后,我们使用System.out.println()
函数将str3
的值输出到控制台。
总之,字符串类型在Java中用于表示一组字符序列,它可以包含任何Unicode字符。字符串类型的变量必须用双引号括起来。使用字符串类型时,可以使用加号(+
)将多个字符串拼接起来,或者使用字符串内置的函数来处理字符串。
基本数据类型变量间的运算规则如下:
- 当两个操作数都是整型时,结果也是整型。如果两个整型操作数中有一个是长整型,则结果是长整型。
- 当一个操作数是整型,另一个操作数是浮点型时,结果是浮点型。
- 当一个操作数是整型或浮点型,另一个操作数是双精度浮点型时,结果是双精度浮点型。
- 当一个操作数是长整型,另一个操作数是浮点型时,结果是浮点型。
- 当一个操作数是长整型或浮点型,另一个操作数是双精度浮点型时,结果是双精度浮点型。
- 当一个操作数是字符型,另一个操作数是整型时,结果是整型,表示字符的Unicode编码值。如果要将字符型和整型运算得到字符型结果,需要进行强制类型转换。
- 当一个操作数是布尔型,另一个操作数是整型时,结果是整型。true表示1,false表示0。
- 当一个操作数是布尔型,另一个操作数是浮点型时,结果是浮点型。true表示1.0,false表示0.0。
例如:
int a = 10;
float b = 3.14f;
double c = 2.78;
char d = 'A';
boolean e = true;
int result1 = a + d; // 65 + 10 = 75
float result2 = a + b; // 10 + 3.14 = 13.14
double result3 = b + c; // 3.14 + 2.78 = 5.92
double result4 = a + c; // 10 + 2.78 = 12.78
int result5 = e + a; // true表示1,1 + 10 = 11
这里声明了一个整型变量a
,一个浮点型变量b
,一个双精度浮点型变量c
,一个字符型变量d
,一个布尔型变量e
。然后,我们对它们进行了一些运算,例如将a
和d
相加,得到的结果是75
,因为字符A
的Unicode编码值是65
。又例如将e
和a
相加,得到的结果是11
,因为布尔型的true
表示1
。总之,Java中的基本数据类型变量间的运算规则相对简单,但需要注意数据类型的转换和强制类型转换的问题。
自动类型转换
Java中,当容量小的数据类型的变量与容量大的变量做运算时,结果会自动转换为容量大的数据类型。自动类型转换遵循以下规则:
- 当容量小的数据类型变量与容量大的数据类型变量做运算时,容量小的数据类型会自动转换为容量大的数据类型。例如,
int
类型的变量与double
类型的变量做运算时,int
类型的变量会自动转换为double
类型。 - 当容量小的数据类型变量与容量大的数据类型常量做运算时,容量小的数据类型会自动转换为容量大的数据类型。例如,
int
类型的变量与3.14
这个double
类型的常量做运算时,int
类型的变量会自动转换为double
类型。 - 当容量小的数据类型变量与容量大的数据类型常量做运算时,容量小的数据类型会自动转换为容量大的数据类型。例如,
byte
类型的变量与3
这个int
类型的常量做运算时,byte
类型的变量会自动转换为int
类型。
自动类型转换的过程是隐式的,程序员无需进行任何操作。下面是一个自动类型转换的例子:
public class Main {
public static void main(String[] args) {
int num1 = 10;
double num2 = 3.14;
double result = num1 + num2;
System.out.println(result);
}
}
在这个例子中,我们声明了一个名为num1
的int
型变量,将其赋值为10
。然后,我们声明了一个名为num2
的double
型变量,将其赋值为3.14
。接下来,我们将num1
和num2
相加,并将结果赋值给另一个double
型变量result
。由于num1
是int
型变量,而num2
是double
型变量,因此在计算num1 + num2
时,num1
会自动转换为double
型变量。最后,我们输出result
的值,结果为13.14
。
总之,Java中的自动类型转换遵循一定的规则,程序员无需进行任何操作即可完成类型转换。自动类型转换的过程是隐式的,程序员只需要注意数据类型的容量大小就可以了。
强制类型转换
在Java中,可以使用强制类型转换将一个数据类型转换为另一个数据类型。强制类型转换使用圆括号将要转换的数据类型括起来,并紧跟着要转换的变量或表达式。例如,(double) num
表示将变量num
强制转换为double
类型。强制类型转换的语法如下:
(目标类型) 原始值或变量
需要注意的是,强制类型转换可能会导致精度损失或者数据溢出的问题,因此需要谨慎使用。在进行强制类型转换时,应该确保要转换的数据类型和目标数据类型之间存在合理的转换关系,否则可能会导致程序运行错误或异常。下面是一个强制类型转换的例子:
public class Main {
public static void main(String[] args) {
int num1 = 10;
int num2 = 3;
double result = (double) num1 / num2;
System.out.println(result);
}
}
在这个例子中,我们声明了两个int
型变量num1
和num2
,将它们相除得到一个double
型结果,并将结果赋值给double
型变量result
。由于num1
和num2
都是int
型变量,因此在进行除法运算时,结果也是int
型。为了将结果转换为double
型,我们使用强制类型转换将num1
转换为double
型,然后进行除法运算。最后,我们输出result
的值,结果为3.3333333333333335
。
总之,强制类型转换可以将一个数据类型转换为另一个数据类型。需要注意的是,在进行强制类型转换时,应该确保要转换的数据类型和目标数据类型之间存在合理的转换关系,否则可能会导致程序运行错误或异常。
字符串类型可以转换为基本数据类型吗?
字符串类型不能直接转换为基本数据类型,需要使用相应的转换函数进行转换。例如,如果要将一个字符串转换为整型,可以使用Integer.parseInt()
函数。如果字符串无法转换为指定的数据类型,转换函数会抛出异常。下面是一个将字符串转换为整型的例子:
public class Main {
public static void main(String[] args) {
String str = "123";
int num = Integer.parseInt(str);
System.out.println(num);
}
}
在这个例子中,我们声明了一个字符串变量str
,将其赋值为"123"
。然后,我们使用Integer.parseInt()
函数将str
转换为整型,并将结果赋值给整型变量num
。最后,我们输出num
的值,结果为123
。
总之,字符串类型不能直接转换为基本数据类型,需要使用相应的转换函数进行转换。如果字符串无法转换为指定的数据类型,转换函数会抛出异常,需要进行异常处理。
public class info {
public static void main(String[] args) {
String name = "麻子"; //姓名
int age = 18; //年龄
char gender = '男'; //性别
double weight = 140.5; //体重
boolean isMarried = false; //是否已婚
String phoneNumber = "18888888888"; //电话号码
}
}