基本数据类型与数组
一,标识符和关键字
标识符
定义
用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符,简单地说,标识符就是一个名字 。
性质
(1)标识符由字母、下划线、美元符号和数字组成,长度不受限制。
(2)标识符的第一个字符不能是数字字符。
(3)标识符不能是关键字。
(4)标识符不能是true、false和null(尽管true、false和null不是关键字)。
true,false,null应表示常量
关键字
定义
关键字就是具有特定用途或被赋予特定意义的一些单词,不可以把关键字作为标识符来用。
例如: boolean、byte、short、int、float、double、char、if、else等。
性质
关键字都是小写的。遇到大写肯定不是关键字。
二,八大基本数据类型
逻辑类型:boolean (true/false)
整数类型:byte、short、int、long
字符类型:char
浮点类型:float、double
区别
boolean:true/false
int:4个字节——32位
byte:1个字节——8位
short:2个字节——26位
long:8个字节——64位
char:2个字节——16位
float:4个字节——32位
double:8个字节——64位
需要特别注意的是float常量后面必须要有后缀f或F。如:float x=22.76f
类型转换
精度从低向高排序:byte short char int long float double
规则
(1)当把级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换。
例如:float x=100;
(2)当把级别高的变量的值赋给级别低的变量时,必须使用显示类型转换运算。显示转换的格式:(类型名)要转换的值;
例如:int x=(int)34.89;//高精度向低精度转化会存在精度损失
(3)当把一个int型常量赋值给一个byte和short型变量时,不可以超出这些变量的取值范围,否则必须进行类型转换运算;
public class Example2_2 { public static void main (String args[]) {byte b = 22; int n = 129; float f =123456.6789f ;double d=123456789.123456789;System.out.println("b= "+b); System.out.println("n= "+n);System.out.printf("f=%-30.12f\n",f); System.out.printf("d=%-30.12f\n",d); b=(byte)n; //导致精度的损失.f=(float)d; //导致精度的损失System.out.printf("b=%d\n",b); System.out.printf("f=%-30.12f ",f); }
}
运行结果:
三,数据的输入输出
输入基本型数据
可以使用Scanner类创建一个对象:
Scanner reader = new Scanner(System.in);
其中:reader对象调用下列方法,读取用户在命令行输入的各种基本类型数据:
nextBoolean()、 nextByte()、 nextShort()、 nextInt() 、 nextLong()、nextFloat()、nextDouble()。
上述方法执行时都会堵塞,程序等待用户在命令行输入数据回车确认。
import java.util.Scanner;
public class Example2_3 {public static void main (String args[ ]){System.out.println("用空格或回车做分隔,输入若干个数\n"+"最后输入数字0,回车结束输入操作");Scanner reader=new Scanner(System.in);double sum=0;double x = reader.nextDouble();while(x!=0){sum=sum+x;x=reader.nextDouble();}System.out.printf("sum=%10.5f\n",sum);}
}
输出基本型数据
(1)java使用System类中的方法实现数据输出
例如:System.out.println()或System.out.print()输出串值,表达式的值。二者的区别是前者输出数据后换行,后者不换行。如:
System.out.println(m+"个数的和为"+sum);
System.out.println(":"+123+"大于"+122);
如果需要输出的字符串的长度较长,可以将字符串分解成几部分,然后使用并置符号:“+”将它们首尾相接,
例如:System.out.println("你好,"+"很高兴认识你" );
(2)JDK1.5新增了和C语言中printf函数类似的输出数据的方法,格式如下:
System.out.printf("格式控制部分",表达式1,表达式2,…表达式n)
格式控制部分由格式控制符号:%d、%c、%f、%s和普通的字符组成,普通字符原样输出。格式符号用来输出表达式的值。
%d输出int类型数据值;%c输出char型数据;%f输出浮点型数据,小数部分最多保留6位;%s输出字符串数据。
输出数据时也可以控制数据在命令行的位置,例如:%md输出的int型数据占m列;%m.nf输出的浮点型数据占m列,小数点保留n位。
例如:System.out.printf("%d,%f",12, 23.78);
四,数组
定义: 数组是相同类型的数据按顺序组成的一种复合数据类型。通过数组名加数组下标,来使用数组中的数据。下标从0开始排序。
数组的声明
(1)声明一维数组有下列两种格式:
数组的元素类型 数组名[];
数组的元素类型 [] 数组名;
float boy[];
char [] cat;
(2)声明二维数组有下列两种格式:
数组的元素类型 数组名[][];
数组的元素类型 [][] 数组名;
float a[][];
Char [][] b;
数组的分配空间:new
//数组的声明和分配空间可以在声明时同时完成:、
float boy []=new float[4];
数组元素的使用
数组越界时程序可以编译通过,但运行时将发生
ArrayIndexOutOfBoundsException
数组的引用
数组是引用性数据类型
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.length);System.out.println("数组b的元素个数="+b.length);System.out.println("数组a的引用(带前缀信息)"+a);System.out.println("数组b的引用(带前缀信息)"+b);System.out.println(a==b);int address = System.identityHashCode(a);System.out.printf("数组a的引用%x\n",address);address = System.identityHashCode(b);System.out.printf("数组b的引用%x\n",address);System.out.println("将b的值赋值给a");a=b; //将b的值赋值给aaddress = System.identityHashCode(a);System.out.printf("数组a的引用%x\n",address);address = System.identityHashCode(b);System.out.printf("数组b的引用%x\n",address);System.out.println(a==b);System.out.println("数组a的元素个数="+a.length);System.out.println("数组b的元素个数="+b.length);System.out.println("a[0]="+a[0]+",a[1]="+a[1]+",a[2]="+a[2]);System.out.print("b[0]="+b[0]+",b[1]="+b[1]+",b[2]="+b[2]);}
}
运行结果如下: