发布时间:2024-05-23 12:01
前面两篇文章中我们介绍了Java语言概述,了解了Java开发工具JDK以及详细的使用方式,接下来本篇文章为大家介绍编写Java程序必须掌握的若干语言基础知识,包括数据类型、变量、常量、表达式等。掌握这些基础知识,是编写正确Java程序的前提条件。
目录
一、数据类型
1.内置数据类型
2.引用数据类型
二、关键字与标识符
1.标识符
2.关键字
三、常量和变量
1.常量
2.变量
四、数据类型转换
1.自动数据类型转换
2.强制数据类型转换
五、从键盘输入数据
1.数据输入方式①
2.数据输入方式②
Java 的两大数据类型:
- 内置数据类型
- 引用数据类型
内置数据类型即基本数据类型,Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
byte:
byte 数据类型是8位、有符号的,以二进制补码表示的整数;
最小值是 -128(-2^7);
最大值是 127(2^7-1);
默认值是 0;
byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
例子 :byte a = 100,byte b = -50。
short:
short 数据类型是 16 位、有符号的以二进制补码表示的整数
最小值是 -32768(-2^15);
最大值是 32767(2^15 - 1);
Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
默认值是 0;
例子 :short s = 1000,short r = -20000。
int:
int 数据类型是32位、有符号的以二进制补码表示的整数;
最小值是 -2,147,483,648(-2^31);
最大值是 2,147,483,647(2^31 - 1);
一般地整型变量默认为 int 类型;
默认值是 0 ;
例子 :int a = 100000, int b = -200000。
long:
long 数据类型是 64 位、有符号的以二进制补码表示的整数;
最小值是 -9,223,372,036,854,775,808(-2^63);
最大值是 9,223,372,036,854,775,807(2^63 -1);
这种类型主要使用在需要比较大整数的系统上;
默认值是 0L;
例子 : long a = 100000L,long b = -200000L。
\"L\"理论上不分大小写,但是若写成\"l\"容易与数字\"1\"混淆,不容易分辩。所以最好大写。
float:
float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
float 在储存大型浮点数组的时候可节省内存空间;
默认值是 0.0f;
浮点数不能用来表示精确的值,如货币;
例子 :float f1 = 234.5f。
double:
double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;
浮点数的默认类型为 double 类型;
double类型同样不能表示精确的值,如货币;
默认值是 0.0d;
例子:
double d1 = 7D ;
double d2 = 7.;
double d3 = 8.0;
double d4 = 8.D;
double d5 = 12.9867;
7 是一个 int 字面量,而 7D,7. 和 8.0 是 double 字面量。
boolean:
boolean数据类型表示一位的信息;
只有两个取值:true 和 false;
这种类型只作为一种标志来记录 true/false 情况;
默认值是 false;
例子 :boolean one = true。
char:
char 类型是一个单一的 16 位 Unicode 字符;
最小值是 \\u0000(十进制等效值为 0);
最大值是 \\uffff(即为 65535);
char 数据类型可以储存任何字符;
例子 :char letter = \'A\';
现将Java语言的4类8种基本数据类型总结归纳如下:
在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。
对象、数组都是引用数据类型。
所有引用类型的默认值都是null。
一个引用变量可以用来引用任何与之兼容的类型。
例子 :Site site = new Site(\"Runrunrun\")。
任何一种计算机语言都离不开标识符和关键字,因此下面将详细介绍 Java 的标识符、
关键字和保留字。
Java 中标识符是为方法、变量或其他用户定义项所定义的名称。标识符可以有一个或
多个字符。在 Java 语言中,标识符的构成规则如下。
· 标识符由数字(0~9)和字母(A~Z 和 a~z)、美元符号($)、下划线(_)以及 Unicode 字
符集中符号大于 0xC0 的所有符号组合构成(各符号之间没有空格)。· 标识符的第一个符号为字母、下划线和美元符号,后面可以是任何字母、数字、美元符
号或下划线。
另外,Java 区分大小写,因此 myvar 和 MyVar 是两个不同的标识符。
提示:标识符命名时,切记不能以数字开头,也不能使用任何 Java 关键字作为标识符,
而且不能赋予标识符任何标准的方法名。
标识符分为两类,分别为关键字和用户自定义标识符。
· 关键字是有特殊含义的标识符,如 true、false 表示逻辑的真假。
· 用户自定义标识符是由用户按标识符构成规则生成的非保留字的标识符,如 abc 就是
一个标识符。
提示:使用标识符时一定要注意,或者使用关键字,或者使用自定义的非关键字标识符。
此外,标识符可以包含关键字,但不能与关键字重名。例如以下合法与不合法标识符。
合法标识符:date、$2011、_date、D_$date 等。
不合法的标识符:123.com、2com、for、if 等。
标识符用来命名常量、变量、类和类的对象等。因此,一个良好的编程习惯要求命名标
识符时,应赋予它一个有意义或有用途的名字。
关键字(或者保留字)是对编译器有特殊意义的固定单词,不能在程序中做其他目的使
用。关键字具有专门的意义和用途,和自定义的标识符不同,不能当作一般的标识符来使用。
例如,在【一起学Java第一篇】的实例 HelloWorld.java 中的 class 就是
一个关键字,它用来声明一个类,其类名称为 HelloWorld。public也是关键字,它用来表
示公共类。另外,static和void也是关键字,它们的使用将在后面的章节中详细
介绍。
Java 的关键字对 Java 编译器有特殊的意义,它们用来表示一种数据类型,或者表示
程序的结构等。保留字是为 Java 预留的关键字,它们虽然现在没有作为关键字,但在以后
的升级版本中有可能作为关键字。
Java 语言目前定义了 51 个关键字,这些关键字不能作为变量名、类名和方法名来使
用。以下对这些关键字进行了分类。
· 数据类型:boolean、int、long、short、byte、float、double、char、class、interface。
· 流程控制:if、else、do、while、for、switch、case、default、break、continue、
return、try、catch、finally。· 修饰符:public、protected、private、final、void、static、strict、abstract、transient、
synchronized、volatile、native。· 动作:package、import、throw、throws、extends、implements、this、supper、
instanceof、new。· 保留字:true、false、null、goto、const。
提示:由于 Java 区分大小写,因此 public 是关键字,而 Public 则不是关键字。但
是为了程序的清晰及可读性,要尽量避免使用关键字的其他形式来命名。
常量值又称为字面常量,它是通过数据直接表示的,因此有很多种数据类型,像整型和字符串型等。下面一一介绍这些常量值。
整型常量值
Java 的整型常量值主要有如下 3 种形式。
- 十进制数形式:如 54、-67、0。
- 八进制数形式:Java 中的八进制常数的表示以 0 开头,如 0125 表示十进制数 85,-013 表示十进制数 -11。
- 十六进制数形式:Java 中的十六进制常数的表示以 0x 或 0X 开头,如 0x100 表示十进制数 256,-0x16 表示十进制数 -22。
整型(int)常量默认在内存中占 32 位,是具有整数类型的值,当运算过程中所需值超过 32 位长度时,可以把它表示为长整型(long)数值。长整型类型则要在数字后面加 L 或 1, 如 697L,表示一个长整型数,它在内存中占 64 位。
实型常量值
Java 的实型常量值主要有如下两种形式。
- 十进制数形式:由数字和小数点组成,且必须有小数点,如 12.34、-98.0。
- 科学记数法形式:如 1.75e5 或 32&E3,其中 e 或 E 之前必须有数字,且 e 或 E 之后的数字必须为整数。
Java 实型常量默认在内存中占 64 位,是具有双精度型(double)的值。如果考虑到需要节省运行时的系统资源,而运算时的数据值取值范围并不大且运算精度要求不太高的情况,可以把它表示为单精度型(float)的数值。
单精度型数值一般要在该常数后面加 F 或 f,如 69.7f,表示一个 float 型实数,它在内存中占 32 位(取决于系统的版本高低)。
布尔型常量值
Java 的布尔型常量只有两个值,即 false(假)和 true(真)。
字符型和字符串常量值
Java 的字符型常量值是用单引号引起来的一个字符,如 \'e\'、E\'。需要注意的是,Java 字符串常量值中的单引号和双引号不可混用。双引号用来表示字符串,像 \"11\"、\"d\" 等都是表示单个字符的字符串。
除了以上所述形式的字符常量值之外,Java 还允许使用一种特殊形式的字符常量值来表示一些难以用一般字符表示的字符,这种特殊形式的字符是以开头的字符序列,称为转义字符。
注意:这里表示字符和字符串的单引号和双引号都必须是英语输入环境下输入的符号。
下列出了 Java 中常用的转义字符及其表示的意义。
常量的声明
常量的声明形式与变量的声明形式基本一样,只需要用关键字final标识,通常final写在最前面,例如:
final int MAX = 10;
final float PI = 3.14f;
在定义常量时,需要注意如下内容:
- 在定义常量时就需要对该常量进行初始化。
- final 关键字不仅可以用来修饰基本数据类型的常量,还可以用来修饰对象的引用或者方法。
- 为了与变量区别,常量取名一般都用大写字符。
程序中使用常量有两点好处:一是增加可读性,从常量名可知常量的含义;二是增强可维护性,程序中多处使用常量时,当要对他们进行修改时,只需在声明语句中修改一处即可 。
对开发人员来说,变量是用来描述一条信息的别名,可以在程序代码中使用一个或多个变量。变量中可以存储各种类型的信息,如登录信息、版本名称、文件的大小、某个英文单词以及飞机票价格等。
在 java 中用户可以通过指定数据类型和标识符来声明变量,其基本语法如下两种格式:
变量类型 标识符;
变量类型 标识符=声明变量值;
变量标识符的命名规范如下:
· 首字符必须是字母、下划线(―)、美元符号($)或者人民币符号(¥)。
· 标识符由数字(0~9)、大写字母(A~Z)、小写字母(a~z)、下划线(―)、美元符号($)、人民币符号(¥)以及所有在十六进制 0xc0 前的 ASCII 码组成。
· 不能把关键字、保留字作为标识符。
· 标识符的长度没有限制。
· 标识符区分大小写。
如下代码分别声明了 String、boolean 和 int 类型的变量。
String employee; // String 类型的变量
boolean isSave; // boolean 类型的变量
int create_at; // int 类型的变量
变量赋值
初始化变量是指为变量指定一个明确的初始值。初始化变量有两种方式:一种是声明时直接赋值,一种是先声明、后赋值。如下代码分别使用两种方式对变量进行了初始化。
char usersex=\'女\'; // 直接赋值
或者
String username; // 先声明
username =\"琪琪\"; // 后赋值
另外,多个同类型的变量可以同时定义或者初始化,但是多个变量中间要使用逗号分隔,声明结束时用分号分隔。
String username,address,phone,tel; // 声明多个变量
int num1=12,num2=23,result=35; // 声明并初始化多个变量
Java 中初始化变量时需要注意以下事项:
· 变量是类或者结构中的字段,如果没有显式地初始化,默认状态下创建变量并默认初始值为 0。
· 方法中的变量必须显式地初始化,否则在使用该变量时就会出错。
数据类型的转换,分为自动转换和强制转换。自动转换是程序在执行过程中“悄然”进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换;强制类型转换则必须在代码中声明,转换顺序不受限制。
自动转换按从低到高的顺序转换。不同类型数据间的优先关系如下:
低 ---------------------------------------------> 高
byte,short,char-> int -> long -> float -> double
运算中,不同类型的数据先转化为同一类型,然后进行运算,转换规则如下:
强制转换的格式是在需要转型的数据前加上“( )”,然后在括号内加入需要转化的数据类型。有的数据经过转型运算后,精度会丢失,而有的会更加精确,下面的例子可以说明这个问题。
public class Demo {
public static void main(String[] args){
int x;
double y;
x = (int)34.56 + (int)11.2; // 丢失精度
y = (double)x + (double)10 + 1; // 提高精度
System.out.println(\"x=\" + x);
System.out.println(\"y=\" + y);
}
}
运行结果:
x=45
y=56.0
仔细分析上面程序段:由于在 34.56 前有一个 int 的强制类型转化,所以 34.56 就变成了 34。同样 11.2 就变成了 11 了,所以 x 的结果就是 45。在 x 前有一个 double 类型的强制转换,所以 x 的值变为 45.0,而 10 的前面也被强制成 double 类型,所以也变成 10.0,所以最后 y 的值变为 56。
import java.io.*;
public class class_name{ //类名称
public static void main(String[] args){
String str; //声明str为String类型
BufferedReader buf; //声明buf为BufferedReader类的变量,该类在java.io类库中
buf = new BufferedReader(new InputStreamReader(System.in));//创建buf对象
str = buf.readLine();//用readLine()方法读取字符串存入str中
}
}
为了简化输入操作,从JAVA SE5版本开始在java.util类库中新增了一个专门用于输入操作的类Scanner,可以使用该类创建一个对象,然后利用该对象调用相应的方法,从键盘上读取数据。
import java.io.*;
public class class_name{
public static void main(String[] args){
Scanner reader = new Scanner(System.in);
//创建Scanner对象用于读取System.in的输入
double num;
//声明num是double型变量,也可以声明为其他数值型变量
num = reader.nextDouble();
//调用reader对象的相应方法,读取键盘数据
}
}
JAVA使用的System.out表示标准输出设备,而标准输入设备用System.in表示。
默认情况下,标准输出设备就是电脑的显示器,而标砖输入设备就是键盘。
此外,上面的double类型也可以进行修改,对应的输入格式也会随之改变:
nextByte()、 nextFloat()、nextLong()、nextShort()、next()、nextLine()......