前言
在本章中,基本数据类型、数组都是C语言中已有的概念,枚举类型则是需要新认识的一个知识点。
基本知识
一、标识符和关键字
1.标识符的用处:标识类名、方法名、变量名、类型名、数组名、文件名;
2.Java 语言规定标识符由字母、下划线、美元符号和数字组成。同时首字符不能是数字字符;
3.Java 语言标识符区分大小写;
4.Java 语言使用 Unicode 标准字符集;
5.关键字不能用于命名。
二、Java 的基本数据类型(简单数据类型)
1.基本类型
(1)整形 -- byte(8 bit)/short(2*8 bit)/int(4*8 bit)/long(8*8 bit)
(2)浮点型 -- float(4*8 bit)/double(8*8 bit)
(3)布尔型 -- 布尔型变量只有两个值:真(true)或假(false)。
该数据的定义举例:boolean sign=true/false;
(4)字符型 -- 使用关键字 char (2*8 bit)来定义字符变量,如:
char ch='A',home='家’,handsome='酷'。
2.引用类型
(1)类 -- class;
(2)接口 -- interface;
(3)数组 -- array。
3.各种数据类型的表示法
(1)byte/short 型无表示法;
(2)long 型用后缀 L 表示:108L、07123L、0x3ABCL,float 型必须有后缀 “f” 或 “F” :231.0F、2e40f;
(3)double 型可以有后缀 “d” 或 “D”,但可以省略:2389.539d、0.05D、1e-90。
4.应用举例
public class Example2_1
{
public static void main ( String args[ ] )
{
char ch1='w',ch2='\"';
int p1=32831,p2=30452;
System.out.println("\""+ch1+"\"的位置:"+(int)ch1);
System.out.println("\""+ch2+"\"的位置:"+(int)ch2);
System.out.println("第"+p1+"个位置上的字符是:"+(char)p1);
System.out.println("第"+p2+"个位置上的字符是:"+(char)p2);
}
}
D:\3000>java Example2_1
"w"的位置:969
"""的位置:34
第32831位置上的字符是:耿
第30452位置上的字母是:直
5.基本数据类型的转换
除逻辑类型数据外,一些基本数据类型会涉及到数据转换。将它们按精度从低到高排序:
byte short char int long float double
(1)当将级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换,例:
int x=50;
float y;
y=x;
若输出y,则结果为 50.0 ;
(2)当将级别高的变量的值赋给级别低的变量时,必须用显示类型转换运算。转换格式:(类型名)要转换的值,例:
int x=(int)34.89;
long y=(long)56.98F;
int z=(int)1999L;
若输出 x ,则 y 和 z 的值为34,56和1999,强制转换运算可能会导致精度损失。
注意:当把一个 double 型常量赋值给 float 型变量时,没有进行强制转换运算,如:
float x=12.4
这样将导致语法错误,编译器会提示“possible loss of precision”。正确写法如下:
float x=12.4F;
float x=(float)12.4;
(3)应用举例
public class Example2_2
{
public static void main (String args[] )
{
int c=12;
long d=66666;
float f=1e-20F;
double g=3.14e-300;
double result=f*g;
System.out.println("f="+f);
System.out.println("g="+g);
System.out.println("result="+result);
g=1234.123456789;
c=(int)d;
f=(float)g;
System.out.print(" c= "+c);
System.out.println(" d= "+d);
System.out.println("f="+f);
System.out.println("g="+g);
}
}
D:\3000>java Example2_2
f=1.0E-20
g=3.14E-300
result=3.14E-320
c= 66666 d=66666
f=1234.1234
g=1234.123456789
三、从命令行输入、输出数据
1.Scanner 是一个类,可以使用该类创建一个对象,如:
Scanner reader=new Scanner(System.in);
然后 reader 对象调用下列方法,读取用户在命令行输入的各种数据类型:
nextBoolean();nextByte(),nextShort(),nextInt(),nextLong(),nextFloat(),nextDouble()
上述方法执行时都会堵塞,以等待用户在命令行输入数据,按回车键确认。
2.System.out.println 和 System.out.print 可输出串值、表达式的值。前者输出数据后换行,后者不换行。允许使用并置符号“+”,将变量、表达式或一个常数值与一个字符串并置一起输出。
如 System.out.println(""+x);System.out.println(":"+123+"大于"+122)
3.应用举例:
import java.util.Scanner
public class Example2_3
{
public static void main (String args[ ] )
{
System.out.println("请输入若干个数,每输入一个数回车确认");
System.out.println("最后输入数字0结束输入操作");
Scanner reader=new Scanner(System.in);
double sum=0;
int m=0;
double x = reader.nextDouble();
while(x!=0)
{
m=m+1;
sum=sum+x;
=reader.nextDouble();
}
System.out.println(m+"个数的和为"+sum);
System.out.println(m+"个数的平均值"+sum/m);
}
} /*该程序的作用:用户依次输入若干个数字,每输入一个数字都需要按回车键确认,最后输入数字0,结束整个输入操作过程。程序将会计算出这些数的和及平均值。*/
该程序的作用是:
用户依次输入若干个数字,每输入一个数字都需要按回车键确认,最后输入数字0,结束整个输入操作过程。程序将会计算出这些数的和及平均值。
4.JDK 1.5 新增了和 C 语言中 printf 函数类似的数据输出方法,该方法的使用格式如下:
System.out.printf("格式控制部分",表达式1,表达式2,……,表达式n)
其中,一些格式符号及其作用:
%d:输出 int 型数据。
%c:输出 char 型数据。
%s:输出字符串数据。
%f:输出浮点型数据,小数部分最多保留 6 位。
%md:输出的 int 型数据占 m 列。
%m.nf:输出的 float 型数据占 m 列,小数点保留 n 位。
如:System.out.printf("%d,%f",12,23.78)
四、数组
1.声明数组
包括数组的名字、数组的元素的数据类型。
(1)一维数组的两种声明格式:
数组的元素类型 数组名字[ ]。
数组的元素类型[ ] 数组名字。(二维与一维相同)
如:
float boy[]; //一维,存储 float 型
char cat[][]; //二维,存储 char 型
(2)数组的元素类型可以是 Java 的任意一种类型。若用户已经定义了一种 People 类型数据,那么用户可以声明下面一个数组:
People china[];
则数组 china 的元素能存放 People 类型的数据。
(3)与 C/C++ 不同,Java 不允许在声明数组中的方括号内指定数组元素的个数。
2.创建数组
创建数组即为其分配内存空间以便能使用该数组。
(1)为数组分配内存空间的格式如下:
数组名字 = new 数组元素的类型[数组元素的个数];new 是一个运算符,用以分配空间。
如:
boy = new float[4];
另,声明数组和创建数组可以一起完成,如:
float boy[]=new float [4];
(2)二维数组创建的相关问题:
①Java 采用“数组的数组”定义多维数组。一个二维数组由多个一维数组组成。
int mytwo[][]=new int[3][4]
上段代码创建的二维数组 mytwo 就是由 3 个长度为 4 的一维数组 mytwo[0]、mytwo[1] 和 mytwo[2] 构成。
②构成二维数组的一维数组长度也可以不同,在创建二维数组时可以分别指定构成该二维数组的一维数组的长度,如:
int a[][]=new int [3][];
a[0]=new int[6];
a[1]=new int[12];
a[2]=new int[8];
(3)和 C 语言不同,Java 允许使用 int 型变量指定数组的元素个数。如:
int size=30;
double number[]=new double[size];
3.数组元素的使用
数组元素下标相关的一些性质和 C 语言是一样的。
4.length 的使用
(1)对于一维数组,“数组名字.length”的值就是数组元素个数;
(2)对于二维数组,“数组名字.length”的值是它含有一维数组的个数。
5.数组的初始化
数组初始化就是给数组赋一个初始值。创建数组后,系统会给每个数组元素一个默认的值。如:
float boy[]={1,2,3,4,5};
上述语句相当于如下语句:
float boy[]=new float[5]
然后用如下语句赋值:
boy[0]=1;boy[1]=2;boy[2]=3;boy[3]=4;boy[4]=5;
也可以直接用若干个一维数组初始化一个二维数组,如:
int a[][]={{1},{1,1},{1,2,1},{1,3,3,1},{1,4,6,4,1}};
6.数组的引用
数组引用就是用另一种方式称呼一个数组。由于数组属于引用型变量,若两个相同类型的数组具有相同的引用,则它们就有完全相同的元素。如:
int a[]={1,2,3},b[]={4,5};
7.应用举例
public class Example2_4
{ public static void main (String args[ ] )
{ int a[]={1,2,3,4};
int b[]={100,200,300};
System.out.println("数组a的引用="+a);
System.out.println("数组b的引用="+b);
a=b;
System.out.println("数组a的元素个数="+a.length);
System.out.println("数组b的元素个数="+b.length);
System.out.print("a[2]="+a[2]+",b[2]="+b[2]);
}
}
D:\3000.java Example2_4
数组a的引用=[ I@35ce36
数组b的引用=[ I@757aef
数组a的元素个数=3
数组b的元素个数=3
a[2]=300,b[2]=300
五、枚举类型
Java 使用关键字 enum 声明枚举类型。枚举类型的常量列表是用逗号分隔的字符序列,称为枚举类型的常量,常量需符合标识符规定。语法格式如下:
enum 名字
{常量列表
}
应用举例
enum Season
{
Spring,summer,autumn,winter
}
public class E
{ public static void main(String args[])
{
Season season=Season.spring;
System.out.println(season);
}
}
六、小结
1.标识符由字母、下划线、美元符号、数字组成,且首字符不能是数字;
2.Java 语言有8种基本的数据类型:boolean、type、short、int、long、float、double、char;
3.数组是相同类型数据元素按顺序组成的一种复合数据类型。数组属于引用型变量,所以两个相同类型的数组如果具有相同引用,他们就有完全相同的元素;
4.枚举类型是 JDK 1.5 新引入的一种数据类型。