Java 学习手记(二)基本类型、数组和枚举类型

前言

在本章中,基本数据类型、数组都是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 新引入的一种数据类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值