1、第二章 Java语言基础,Java程序设计,Chapter2 Java语言基础,目 录,Chapter2 Java语言基础,Java语言的数据类型,Chapter2 Java语言基础,基本数据类型,基本数据类型也称作简单数据类型。 Java语言有8种简单数据类型,分别是:byte 、short 、int、long、float、double、 char 、 boolean这8种数据类型习惯上可分为4大类型: 整数类型:byte、short、int、long 浮点类型:float、double 字符类型:char 逻辑类型:boolean,Chapter2 Java语言基础,整数类型,Java编程
2、语言中的整数类型都是有符号整数, 不存在无符号整数。(与C和C+不同),Chapter2 Java语言基础,整数类型,整型可用十进制、八进制或十六进制表示。 首位为“0”表示八进制的数值;首位为“0x”表示十六进制的数值。 请看下面的例子: 5 表示十进制值5 075 表示八进制数值75 (也就是十进制数61) 0x9ABC 表示十六进制的数值9ABC (也就是十进制数39612) 整型,如在其后有一个字母“L”表示一个long常量(也可以用小写“l”),Chapter2 Java语言基础,浮点类型,Java语言中有两种浮点类型:float和double. 如果一个数值常量中包含小数点或指数部
3、分,或者其后跟有字母F或f(float), D或d(double),则该数为浮点数. 如果不明确指明浮点数的类型,浮点数缺省为double类型.3.14159 (double型浮点数)2.08E25 (double型浮点数)6.56f (float型浮点数) float为32位(单精度),double为64位(双精度),Chapter2 Java语言基础,字符型,关于字符型 Java中char是16位的无符号型数据 内存分配给2个字节,占16位,最高位不用来表示符号 字符必须用一对单引号括起来,如a,B等Unicode字符集采用双字节对字符进行编码, 例如:A、 ! 、9、 好 、t 、 与C
4、语言类似,Java也提供转义字符,以反斜杠()开头,将其后的字符转变为另外的含义。,Chapter2 Java语言基础,字符型之例,public class example02_01 public static void main (String args) char chinaWord=你,japanWord=;int p1=36328,p2=38358;System.out.println(“汉字你在unicode表中的顺序位置“ + (int)chinaWord);System.out.println(“日语在unicode表中的顺序位置“ + (int)japanWord); Syst
5、em.out.println(“unicode表中第20328位置上的字符是:“ + (char)p1);System.out.println(“unicode表中第12358位置上的字符是:“ + (char)p2); ,Chapter2 Java语言基础,字符型 vs 字符串,值得注意的一点是,用双引号引用的文字, 就是我们平时所说的字符串类型(String), 它不是基本类型,而是一个对象类型,Java是将字符串作为对象实现的. 为char类型所规定的字符转义序列在字符串内同样适用,如“threenlines”等.,Chapter2 Java语言基础,逻辑类型,逻辑类型 常量:true
6、,false 变量的定义 使用关键字boolean来定义逻辑变量, 定义时也可以赋给初值: boolean x=true, tom=false, jiafei; 小写(与C+不同),Chapter2 Java语言基础,复合数据类型,复合数据类型: 用户定义的、由一系列简单数据类型及其运算符合而成。 (类和接口)引用模型,Chapter2 Java语言基础,复合数据类型,Point p = new Point(1,1);,p,class Pointstatic String color;int x,y;Point(int x, int y)this.x = x ;this.y = y ;publ
7、ic void move(int dx,int dy)x+=dx;y+=dy; ,Chapter2 Java语言基础,基本数据 vs. 数据类型类,对于每一种基本数据类型,Java分别提供相应的类对其进行封装,以便提供更强大的数据处理能力。int a = Integer.parseInt(“3”);Float f = Float.MAX_VALUE;,Chapter2 Java语言基础,数据类型的默认值,为了提高程序的健壮性,JAVA为所有的数据类型设置了默认值,Chapter2 Java语言基础,目 录,Chapter2 Java语言基础,类型转换,各类型所占用的位数从短到长依次为:(byt
8、e,short,char)-int-long-float-double 简单数据类型之间的转换又可以分为: 低级到高级的自动类型转换 高级到低级的强制类型转换,Chapter2 Java语言基础,自动类型转换,JAVA中整型、字符型和浮点型数据可以互相自动转换 (低级向高级),混合运算.,Chapter2 Java语言基础,强制数据类型转换,由低级向高级可以自动转换,但是由高级向 低级转换必须显示说明、进行强制转换.,Chapter2 Java语言基础,高级变量转换为低级变量之例,/简单类型强制转换 public class example02_02public static void mai
9、n (String args )int c=2200;long d=8000;float f;double g=123456789.123456789;c=(int)d;f=(float)g; /导致精度的损失.System.out.println(“c= “+c);System.out.println(“d= “+d);System.out.println(“f= “+f);System.out.println(“g= “+g); ,Chapter2 Java语言基础,目 录,Chapter2 Java语言基础,字符集 编码方式,在中国,大陆最常用的就是GBK18030编码,除此之外还有GB
10、K,GB2312. GB2312:6763个汉字和682个其它符号 95年GBK1.0:1886个符号 GBK18030:收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字 按照GBK18030、GBK、GB2312的顺序,种编码是向下兼容,同一个汉字在三个编码方案中是相同的编码.,Chapter2 Java语言基础,编码方式,台湾,香港等地使用的是BIG5编码 日本:SJIS编码,Chapter2 Java语言基础,Unicode - 1,如果把各种文字编码形容为各地的方言,那么Unicode就是世界各国合作开发的一种语言。 在这种语言环境下,不会再有语言的编码冲突
11、,在同屏下,可以显示任何语言的内容,这就是Unicode的最大好处。 那么Unicode是如何编码的呢?其实非常简单。 就是将世界上所有的文字用个字节统一进行编码。 个字节最多能够表示65536个编码,够吗?,Chapter2 Java语言基础,Unicode - 2,韩国和日本的大部分汉字都是从中国传播过去的,字型是完全一样的。 比如:“文”字,GBK和SJIS中都是同一个汉字,只是编码不同而已. 这样统一编码,个字节就已经足够容纳世界上所有的语言的大部分文字. 为了防止将来个字节不够用开发了UCS-4,由原先的65536个编码扩展至将近100万编码,Chapter2 Java语言基础,标识
12、符,标识符identifier 好像一个人生下来就要给他起个名字 一样,作为一种识别记号。计算机中的变量、常量、方法、类等也都是用名字来加以识别的,这种名字就是标识符。 起名的方法有一种约定,即由一个字母或者一串以字母开头由字母、数字或符号组成的字符串。 符号只允许下划线_和美元$符号 名字长度不限 注意英文字母大小写代表不同含义 取名应遵循易于理解、便于记忆的原则例如:合法标识符 Lotus_1 wang$ 非法标识符 A?2 3ab,Chapter2 Java语言基础,保留字,保留字(关键字)就是Java语言中已经被赋予特定意义的一些单词 不可以把这类词作为名字来用 注意 Java中tru
13、e、false、null都是小写,C+中大写 无sizeof运算符 Java所有数据类型的长度和表示是固定的,与平台无关,不是像在C/C+语言中那样数据类型的长度根据不同的平台而变化。这正是Java语言的一大特点. goto和const是Java编程语言中保留的没有意义的关键字.,Chapter2 Java语言基础,保留字,Chapter2 Java语言基础,目 录,Chapter2 Java语言基础,Java的运算符,JAVA语言按运算符对数据的运算结果分类有算术运算符、逻辑运算符、关系运算符、赋值运算符和位运算符;按运算符运算的数据个数分类可分为一元运算符、二元运算符和三元运算符. 算术运
14、算符有五种 加 + 减 乘 * 除 / 取余% 其中除减号可作为一元运算符外均为二元运算符. 另外两个经常使用的一元运算符是 i+ 和 +I i- 和 -i,int a=1, b=2; a+b = ,Chapter2 Java语言基础,语句与表达式,语句是构成程序的基本单位,语句具有独立完整的含义,可以对计算机发出操作命令,每一条语句都必须以分号;作为结束符. 表达式是用运算符把操作数(变量、常量和方法)连接起来表达某种运算或含义的式子. 一个表达式可以同时包括多个操作,而操作的顺序由各运算符的优先级及括号来决定。其中运算符是算术运算符称为算术表达式;运算符为逻辑运算符称为逻辑表达式.,Cha
15、pter2 Java语言基础,语句与表达式 - 1,语句和表达式的区别与联系 语句是程序的组成部分;表达式是语句的组成部分 语句有结束符;表达式没有结束符 语句是针对程序而言的;表达式是数学上的计算概念 算式的计算结果=号在右边;赋值语句=号在表达式左边,Chapter2 Java语言基础,算术混合运算的精度,精度从“底”到“高”排列的顺序是: byte short int long float double Java将按运算符两边的操作元的最高精度保留结果的精度, 例如: 5/2的结果是2,要想得到2.5, 必须写成5.0/2或5.0f/2。 char型数据和整型数据运算结果的精度是int。
16、例如:byte x=7; 那么 B+x;的结果是int型.,Chapter2 Java语言基础,运算的精度之例,/算术运算测试 public class example02_03 public static void main(String args)int a=4;int b=10;int d=b*+a;int e=(a/(+b);System.out.println(“a=“+a);System.out.println(“b=“+b); System.out.println(“d=“+d);System.out.println(“e=“+e); , a,b,c和d分别输出什么,Chapte
17、r2 Java语言基础,位运算符,Chapter2 Java语言基础,位运算符,Chapter2 Java语言基础,二元算术运算符、逻辑运算符和位运算符,Chapter2 Java语言基础,运算符的优先级,Chapter2 Java语言基础,运算例程,/通过对给定常数进行大小比较,将比较结果作为逻辑值输出 public class example02_04 public static void main(String args)int x=15;int y=7;boolean c=(xy);boolean d=(float)x/y=(double)x/y);System.out.println
18、(“c=“+c);System.out.println(“d=“+d); ,Chapter2 Java语言基础,运算例程,/通过比较字符串,将字符串比较结果输出 public class example02_05 public static void main(String args)int time=10;/上班时间String week=“Monday“;if(week=“Sunday“|week=“Saturday“)System.out.println(“今天我休息“);elseif(time8 ,Chapter2 Java语言基础,位运算应用,“清零” “乘” “除” “交换变量”
19、“加密”, 和“零”按位“与”, 左移“”一位, 右移“”一位, 通过按位异或“” a = 10100001, b = 00000110 a = a b; /a = 10100111 b = a b; /b = 10100001 a = a b; /a = 00000110,Chapter2 Java语言基础,位运算应用 加密,public class example02_06 public static void main(String args) char a1=合,a2=肥,a3=工,a4=大;char secret=0;a1=(char)(a1secret); /21512 54 /(
20、101010000001000 110110)a2=(char)(a2secret); /32933a3=(char)(a3secret); /24037a4=(char)(a4secret); /22823System.out.println(“密文:“+a1+a2+a3+a4);a1=(char)(a1secret); a2=(char)(a2secret);a3=(char)(a3secret); a4=(char)(a4secret);System.out.println(“原文:“+a1+a2+a3+a4); ,Chapter2 Java语言基础,本章总结,基本数据类型 字符集与标识符 Unicode 运算符 表达式,Chapter2 Java语言基础,作业与练习,课本本章练习,Thank You !,