240 likes | 407 Views
西南科技大学网络教育系列课程 高级语程序设计 (Java). 第二章 基本数据类型. 标识符和关键字. 标识符 用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符,定义的规则如下: 由字母、数字、下划线和美元符组成 必须以字母、下划线或美元符号打头 严格区分大小写,没有长度限制 应该具有特定的意义. 拉丁字母 (a,b,c … ), 汉语中的汉字,日文中的片假语、平假语,朝鲜文以及其他许多语言中的文字. 标识符是 Java 语言的基本组成部分. 合法的标示符,如:
E N D
西南科技大学网络教育系列课程 高级语程序设计(Java) 第二章 基本数据类型
标识符和关键字 • 标识符 • 用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符,定义的规则如下: • 由字母、数字、下划线和美元符组成 • 必须以字母、下划线或美元符号打头 • 严格区分大小写,没有长度限制 • 应该具有特定的意义 拉丁字母(a,b,c…),汉语中的汉字,日文中的片假语、平假语,朝鲜文以及其他许多语言中的文字 • 标识符是Java语言的基本组成部分
合法的标示符,如: $Programe_java$Programe_Java1Programe2_1日历a 非法的标示符,如: 12Programe&_javaProgram-Java1%Programe21$sum¥number
关键字 • 关键字就是Java语言中已经被赋予特定意义的一些单词,它们在程序上有着不同的用途,不可以把关键词作为类名、变量名、方法名、类型名、数组名、文件名等名字来用 • 关键字如下表所示
abstract break byte boolean catch case char class continue default do double else extends false final float for finally if import implements int interface Instanceof long length native new null package private protected public return switch synchronized short static super try true this throw throws threadsafe transient void volatile while Java关键字表
字节型(byte) 字符型(char) 短整型(short) 整数类型 整型(int) 长整型(long) 数值类型 基本数据类型 单精度浮点型(float) 实数类型 双精度浮点型(double) 布尔类型(boolean) Java数据类型 空类型(null) 类(class) 接口(interface) 复合数据类型 数组 基本数据类型 Java数据类型表
整数类型 • Java整型数都为有符号数,整型多为十进制数形式,也可为八进制或十六进制形式 • 整型的范围与Java代码所运行的机器无关 • 整形按所占内存空间的大小分为四种类型 • byte、short、int、long • int类型:32位(4个字节) ,最常用,变量的取值范围是: -231~231-1 • int型变量使用关键字int来定义,如: • int a,sum,Number,整数; int n = 55;
long类型:64位(8个字节),用于很大的整数,长整形数字都有一个后缀L,变量的取值范围是 -263~263-1 • long型变量使用关键字long来定义,如:long number,数学,$sum; long n = 500000L; // L的大小写均可 • short类型:16位(2个字节),变量的取值范围是-215~ 215-1 • short型变量使用关键字short来定义,如:short number,数学,$sum; short mynum = 500;
byte类型:8位(1个字节),变量的取值范围是 -27~27-1 • byte型变量使用关键字long来定义,如:byte number,数学,$sum;byte num = 50;
浮点型数据 • 浮点型数据有两种表示方式 • 用十进制数形式表示,由数字和小数点组成,如:3.25 • 用科学计数法形式表示,如:123E-3 • 浮点型按所占内存空间的大小分为两种类型:float型(4字节)和double型(8字节) • 浮点型数据不适合在不允许舍入误差的金融计算领域使用,如:2.0f - 1.1f = 0.89999999999999990 • 数后加f或F为float型,加d或D为double型(默认为double类型)
实例 public class FloatandDouble{ public static void main(String[ ] args){ float c = 4.2f; float d = 12E-3f; double a = 5.0; double b = 13E-2; System.out.println(“a = ”,a); System.out.println(“b = ”,b); System.out.println(“c = ”,c); System.out.println(“d = ”,d); } } a = 5.0 b = 0.13 c = 4.2 d = 0.012
字符数据类型 • 字符常量是用单引号括起来的一个字符,如:'J'、'*‘ • char型变量,内存分配给2个字节,占16位,最高位不是符号位,没有负数的char • char变量的定义如下: • char ch=‘5’; • Java中有以反斜杠’\’开头的字符,反斜杠将其后面的字符转变为另外的含义,称为转义字符如:’\n’ ’\b’ ‘\t’ ‘\’’
Java中的字符型数据是16位的Unicode字符,汉字和英文字母占的内存空间相同 Java中的字符型数据是16位的Unicode字符,汉字和英文字母占的内存空间相同 • 例:“JAVA你好”共12个字节 • 要观察一个字符在unicode表中的顺序位置,必须使用int类型显示转换,如:(int)’a’ • 不可使用short型(2字节)转换,因为char的最高位不是符号位 • 如果要得到一个0~65536之间的数所代表的unicode表中相应位置上的字符必须使用char向显示转换,如:(char)69
例:显示字符在unicode中的位置 • Public class exa{ • Public static void main(String[ ] args){ • char Word = ‘你’ ; • int p = 20329; • System.out.println(“汉字\’你\’在unicode表中的顺序位置:”+(int)Word); • System.out.println(“unicode表中第20329位置上的字符是:”+(char)p); • } • } 结果:20320 结果:佩
布尔数据类型 • 又称为逻辑类型 • 布尔型常量值只有:true和false • 布尔型变量为boolean类型,取值为true或false,定义时可以赋予初值 • 例如: boolean b = true;
精度由低到高排列为: 低 高 byte short char int long float double 基本数据类型的转换 • 基本数据类型的转换就是把一种基本数据类型变量转变成另一种基本类型变量。 • 当把级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换。 • 当把级别高的变量的值赋给级别低的变量时,必须使用显示类型转换运算。 • 高精度向低精度转换容易造成精度损失。
实例 int c; doouble b=4.2; c = (int)b int a=9,c; short b=4; c = a + b int c; float b=4.2f; c = (int)b 结果:c=4 结果:c=4 结果:c=13
数据的简单输入与输出 • Java提供的数据输入与输出很多都是在命令行窗口(例如,MS-DOS窗口)中进行。 • 数据输出 System.out对象 • println():输出文本并换行 • print():输出文本不换行 • printf():带格式的输出(新增方法) 教材P21 • printf(格式控制部分,表达式1,表达式2,…表达式n);
public class PrintOut{ public static void main (String[ ] args){ long x = 5678l; float f = 123.456789f; double d = 123456.12345678; char c = 'a'; System.out.print(f); System.out.println(f); System.out.printf("%c\n%10.3f%n%f,%12d%n%d",c,f,d,x=x+2,x); System.out.printf("%c\n%10.3f%n%f,%3d%n%d",c,f,d,x=x+2,x); } }
数据的输入:Scanner • Scanner是SDK1.5新增的一个类 • 首先创建一个该类的对象:Scanner reader = new Scanner(System.in); • 然后reader对象调用下列方法,读取用户在命令行输入的各种数据类型。 • nextByte(), nextDouble(), nextFloat(), nextLine(),nextInt(),nextLine(),nextLong(), nextShort() • 上述方法执行时系统都会暂时停下来,等待在命令行输入数据后回车确认,
例:用户在键盘依次输入若干个数字,每输入一个数字都需要按回车键确认,最后在键盘输入一个非数字字符(比如回车)结束整个的输入操作过程,程序将计算出这些数的和及平均值例:用户在键盘依次输入若干个数字,每输入一个数字都需要按回车键确认,最后在键盘输入一个非数字字符(比如回车)结束整个的输入操作过程,程序将计算出这些数的和及平均值 • 等待输入的方法:hasNextXXX() • 读取输入数据的方法:nextXXX()
import java.util.*; public class Example{ public static void main (String args[ ]){ Scanner reader = new Scanner(System.in); double sum = 0; int m = 0; while(reader.hasNextDouble()){ double x = reader.nextDouble(); m = m+1; sum = sum+x; } System.out.printf("%d个数的和为%f\n",m,sum); System.out.printf("%d个数的平均值是%f\n",m,sum/m); reader.close(); } }
Unicode字符集介绍 补充介绍 • 每个字符在计算机中通常都是使用一个编码来表示,而这个字符的编码是什么,则要取决于使用哪个字符集(charset) • 几个常见的字符集 • 最早只有一种字符集 — ANSII(American Standards Committee for Information Interchange)字符集,它使用7 bits来表示一个字符,总共表示128个字符 • 扩展的ANSII字符集,使用8 bits表示一个字符,可以表示256个字符,主要在原来的7bits字符集的基础上加入了一些特殊符号例如制表符、画线符等,又叫IBM字符集
MBCS(Multi-Byte Chactacter System,多字节字符系统),也是在ASCII字符集上进行的扩展,以适应不同国家的需要,比如我国的GB-2312 • Unicode是一个涵盖了目前全世界使用的所有已知字符的单一编码方案,也就是说Unicode为每一个字符提供唯一的编码 • 标准的Unicode字符集使用定长编码,即使用16位编码,称为UTF-16 • Unicode还有一种变长编码,即8位编码方式,这种编码可以用1-3个字节表示一个unicode字符,称为UTF-8