java-1.基础与数据类型
第三节数据类型
1.Java程序基本结构
package Mr;定义了 Java程序中类所在的包是Mr,其中Mr是一个标识符
public class Example是创建类的语句,其中public是Java程序的关键字,这里用于修饰类;class是用于创建类的关键字
static int ONE = 1;定义了类的成员变量,其中static是Java程序的关键字,这里用 于修饰成员变量;int也是一个关键字,是Java程序中的整数数据类型,用于定义常量和变量,这里定义的是类的成员变量;ONE是一个标识符,是该类的成员变量,其名称由程序员自己定义,该成员变量的数据类型是整数类型
public static void main(String[] args)是类的主方法,是Java应用程序的入口点,Java 程序是从该方法开始执行的,其中main是主方法的名称,程序员不可以更改;public是Java程序的关键字,这里用于修饰主方法;static是Java程序的关键字,这里用于修饰主方法;void也是一个关键字, 用于修饰方法,表示方法没有返回值;String也是一个类,用于创建字符串对象,这里用于修饰主方法 的形参,在String后跟上一对方括号“[”和“]”表示主方法的形参是一个字符串数组;args是一个标 识符,是主方法的形参数组,其数据类型是String类型
String var = "Hello;在主方法内定义了一个局部变量,其中String是一个类,用于 创建字符串 对象,这里创建了一个局部变量;var是局部变量的名称,是程序自己定义的一个标识符, "Hello"是局部变量var的值,是一个字符串常量;等号“=”是赋值运算符,用于将等号右边的字符串 常量赋值给等号左边的变量var,这样变量var的值就是Hello 了.
System.out.println(ONE);是一个输出语句,可以在命令行或控制台输出信息,其中 System.out.println()是输出语句的固定写法,其中System是一个系统类的名称,其第一个字母必须大写,out是System类提供的一个标准输出流,println是标准输出流out提供的方法,用于输出信息;println()方法内部的ONE是要输出的内容,这里的ONE是类的一个成员变量,其值是1,所以执行该语句将输出1。
最后一条语句System.out.println(var);是一个输出语句,其含义同第6条语句,这里的var是主方法内定义的一个局部变量,其值是"Hello",所以执行该语句将输出Hello
2.标识符和关键字
2.1 标识符
标识符 可以简单地理解为一个名字,用来标识类名、变量名、方法名、数组名、文件名的有效字符序列。
【例2.1】 定义变量i并赋值为100.
int i = 100;
System.out.println(i); //在控制台输出信息
变量名i就是标识符,由程序员所起,但并不是随便取的,也有一定的规则。下面将介绍标识符 的命名规则
2.2 关键字
关键字是Java语言中已经被赋予特定意义的一些单词,不可以把这些字作为标识符来使用。Java 中的关键字如表3.1所示。
JDK 1.8 中,共有 50 个关键字
访问控制
关键字 | 含义 |
---|---|
private | 私有的 |
protected | 受保护的 |
public | 公共的 |
类、方法和变量修饰符
关键字 | 含义 |
---|---|
abstract | 表明类或者成员方法具有抽象属性 |
class | 声明一个类 |
extends | 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口 |
final | 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 |
implements | 表明一个类实现了给定的接口 |
interface | 接口 |
native | 本地,原生方法(非 Java 实现);用来声明一个方法是由与计算机相关的语言(如 C/C++/FORTRAN 语言)实现的 |
new | 用来创建新实例对象 |
static | 表明具有静态属性 |
strictfp | 用来声明 FP_strict(单精度或双精度浮点数)表达式遵循 [IEEE 754](https://baike.baidu.com/item/IEEE 754) 算术规范 |
synchronized | 表明一段代码需要同步执行 |
transient | 声明不用序列化的成员域 |
volatile | 表明两个或者多个变量必须同步地发生变化 |
程序控制语句
关键字 | 含义 |
---|---|
break | 提前跳出一个块 |
case | 用在 switch 语句之中,表示其中的一个分支 |
continue | 回到一个块的开始处 |
default | 默认,例如,用在 switch 语句中,表明一个默认的分支。Java 8 中也作用于声明接口函数的默认实现 |
do | 用在 do-while 循环结构中 |
else | 用在条件语句中,表明当条件不成立时的分支 |
for | 一种循环结构的引导词 |
if | 条件语句的引导词 |
instanceof | 用来测试一个对象是否是指定类型的实例对象 |
return | 从成员方法中返回数据 |
switch | 分支语句结构的引导词 |
while | 用在循环结构中 |
错误处理
关键字 | 含义 |
---|---|
assert | 断言,用来进行程序调试 |
catch | 用在异常处理中,用来捕捉异常 |
finally | 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块 |
throw | 抛出一个异常 |
throws | 声明在当前定义的成员方法中所有需要抛出的异常 |
try | 尝试一个可能抛出异常的程序块 |
包相关
关键字 | 含义 |
---|---|
import | 表明要访问指定的类或包 |
package | 包 |
基本类型
关键字 | 含义 |
---|---|
boolean | 基本数据类型之一,声明布尔类型的关键字 |
byte | 基本数据类型之一,字节类型 |
char | 基本数据类型之一,字符类型 |
double | 基本数据类型之一,双精度浮点数类型 |
float | 基本数据类型之一,单精度浮点数类型 |
int | 基本数据类型之一,整数类型 |
long | 基本数据类型之一,长整数类型 |
short | 基本数据类型之一,短整数类型 |
变量引用
关键字 | 含义 |
---|---|
super | 表明当前对象的父类型的引用或者父类型的构造方法 |
this | 指向当前实例对象的引用 |
void | 声明当前成员方法没有返回值 |
保留关键字
关键字 | 含义 |
---|---|
goto | 是关键字,但不能使用 |
const | 是关键字,但不能使用 |
注意:
const
和goto
是保留字 注意:true
、false
、null
不是关键字,而是常量标识
3.基本数据类型
在Java中有8种基本数据类型,其中6种是数值类型,另外两种分别是字符类型和布尔类型,而
6种数值类型中有4种是整数类型,另外两种是浮点类型
3.1 整数类型
整数类型用来存储整数数值,即没有小数部分的数值,可以是正数、负数,也可以是零。根据所占 内存的大小不同,可以分为byte、short、int和long****4种类型。它们所占的内存和取值范围如表3.1所示, 表**3.1整数类型
数据类型 | 内存空间(****8位等于1字节) | 取值范围 |
---|---|---|
byte | 8位(1个字节) | -128〜127 |
short | 16位(2个字节) | -32768〜32767 |
int | 32位(4个字节) | -2147483648〜2147483647 |
long | 64位(8个字节) | -9223372036854775808〜9223372036854775807 |
1. byte 型
使用byte关键字来定义byte型变量,可以一次定义多个变量并对其进行赋值,也可以不进行赋值。 byte型是整型中所分配的内存空间最少的,只分配1个字节;取值范围也是最小的,只在-128-127 之间,在使用时一定要注意,以免数据溢出产生错误。
【例3.2】 定义byte**型变量。
byte x = 48,y = -108,z; //定义 byte 型变量 x、y、z,并赋初值给 x、y
2. short 型
short型即短整型,使用short关键字来定义short型变量,可以一次定义多个变量并对其进行赋值, 也可以不进行赋值。系统给short型分配2个字节的内存,取值范围也比byte型大了很多,在-32768〜 32767之间,虽然取值范围变大,但还是要注意数据溢出。
3. int 型
int型即整型,使用int关键字来定义int型变量,可以一次定义多个变量并对其进行赋值,也可以 不进行赋值。int型变量取值范围很大,在-2147483648〜2147483647之间,足够一般情况下使用,所 以是整型变量中应用最广泛的。
【例3.3】 定义int型变量。
Int x = 450,y = -462,z; //定义int型变量x、y、z,并赋初值给x、y
4. long 型
long型即长整型,使用long关键字来定义long型变量,可以一次定义多个变量并对其进行赋值, 也可以不进行赋值。而在对long型变量赋值时结尾必须加上"L”或者“1”,否则将不被认为是long型。当数值过大,超出int型范围时就使用long型,系统分配给long型变量8个字节,取值范围则更 大,在-9223372036854775808~9223372036854775807 之间。
【例3.4】 定义long型变量。
long x = 4556824L,y = -4624477161,z; 〃定义 long 型变量 X、y、z.并赋初值给 X、y
在定义long型变量时最好在结尾处加“L”,因为“1”非常容易和数字“1”弄混.
【例3.5]在项目中创建类Number,在主方法中创建不同的整数类型变量,并将这些变量相加, 将结果输出。
public class Number{
public static void main (String[] args) {
byte mybyte = 124;
short myshort = 32564;
int myint = 45784612;
long mylong = 46789451L;
long result = mybyte+myshort+myint+mylong;
System.out.println("四种类型相加的结果为:"+result);
}
}
上面的4种整数类型在Java程序中有3种表示形式,分别 为十进制表示法、八进制表示法和十六进制表示法。
十进制表示法。十进制的表现形式大家都很熟悉,即 逢十进一,每位上的数字最大是9,如120、0、-127 都是十进制数。
八进制表示法。八进制即逢八进一,每位上的数字最大是7,且必须以0开头。例如,0123 (转换成十进制数为83)、-0123 (转换成十进制数为-83)都是八进制数。
十六进制表示法。中国古代使用的就是十六进制数,所谓半斤八两就是如此,逢十六进一, 每位上最大数字是f (15),且必须以0X或0x开头。例如,0x25 (转换成十进制数为37)、 0Xb01e (转换成十进制数为45086)都是十六进制数。
3.2 浮点类型
浮点类型表示有小数部分的数字。在Java语言中,浮点类型分为单精度浮点类型(float)和双精
度浮点类型(double),他们具有不同的取值范围,如表3.2.1所示。
表3.3浮点类型 | ||
---|---|---|
数据类型 | 内存空间(8位等于1字节) | 取值范围 |
float | 32位(4个字节) | 1.4E-45〜3.4028235-E38 |
double | 64位(8个字节) | 4.9E-324~1.7976931348623157E-308 |
3.2.1 float 型
float型即单精度浮点型,使用float关键字来定义float型变量,可以一次定义多个变量并对其进行 赋值,也可以不进行赋值。在对float型进行赋值时在结尾必须添加“F”或者“f”,如果不加,系统自动将其定义为double型变量。float型变量的取值范围在1.4E-45和3.4028235E-38之间。
定义float型变量。
float x = 12.521F,y = -5.264f,z; //定义 float 型变量 x、y、z,并赋初值给 X、y
2. double 型
double型即双精度浮点型,使用double关键字来定义double型变量,可以一次定义多个变量并对 其进行赋值,也可以不进行赋值。在给double型赋值时,可以使用后缀“D"或“d”明确表明这是一 个double类型数据,但加不加并没有硬性规定,可以加也可以不加.double型变量的取值范围在4.9E-324 和 1.7976931348623157E-308 之间。
定义double型变量。
double x = 12.521D,y = -5.264d,z=5.115,p; //定义 double 型变量 X、y、z、p.并赋初值给 X、y、z
在项目中创建SumNumber类,在类的主方法中声明字符型变量,然后进行加法运算, 并将运行结果输出
public class SumNumber( //创建类
public static void main(String[] args) { //主方法
float f1 = 13.23f; //定义float型变量
double d1 = 4562.12d; //定义double型变量
double d2 = 45678.1564; //定义double型变量
double result = f1+d1+d2; //获得各数相加后的结果
System.out.println("浮点型相加达到结果为:"+result);
}
} //将以上变資相加的结果输出
3.3 字符类型
char型即字符类型,使用char关键字进行声明,用于存储单个字符,系统分配两个字节的内存空间。在定义字符型变量时,要用单引号括起来。例如,'s'表示一个字符,且单引号中只能有一个字符,多了就不是字符类型了,而是字符串类型,需要用双引号进行声明。
【例3.3.1] 声明char型变量。
char x = 'a';
由于字符a在Unicode表中的排序位置是97,因此允许将上面的语句写成:
char x = 97;
说明:与C、C++语言一样,Java语言也可以把字符作为整数对待.由于Unicode编码采用无符 号编码,可以存储65536个字符(OxOOOO-Oxffif),所以Java中的字符几乎可以处理所有国家的语 言文字.若想得到一个0〜65536之间的数所代表的Unicode表中相应位置上的字符,也必须使用char 型显式转换
【例3.3.1] 在项目中创建类Export,实现将Unicode表中某些位置上的字符以及一些字符在Unicode表中的位置在控制台上输出。
public class Export (
public static void main(StringO args) (
int i = 'd';
char c = 97;
System.out.println("字符 d 的 Unicode 码是:"+i);
System.out.println("Unicode 码 97 代表的字符是:"+c);
}
}
转义符
\ddd | 1〜3位八进制数据所表示的字符,如\456 |
---|---|
\dxxxx | 4位十六进制所表示的字符,如\0052 |
\’ | 单引号字符 |
\\ | 反斜杠字符 |
\t | 垂直制表符,将光标移到下一个制表符的位置 |
\r | 回车 |
\n | 换行 |
\b | 退格 |
\f | 换页 |
public class Number{
public static void main(String[] args){
char char1 = '\\';
char char2 = '\u2605';
System.out.println("输出反斜杠" +char1);
System.out.println("输出五角星" +char2);
}
}
布尔类型
逻辑类型,只有true和鱼false两个值,分别代表布尔逻辑中的“真”和“假”。使用boolean关键字声明布尔类型变量,通常被用在流程控制中作为 判断条件。
声明boolean型变量。
boolean b1 = true,b2 = false,b3; //定义布尔型变量 b1、b2、b3.并给 b1、b2 赋初值