Java教程03. Java基本数据类型
n 掌握基本数据类型的取值范围及其相互的转换
n 掌握基本数据类型默认值的使用
Java,教程,培训,视频,Java教程,Java培训,Java视频,数据类型
Java中的注释主要有以下三种:
¨ 单行注释://
¨ 多行注释:./*…*/
¨ 文档注释:/** … */
在整个java中与各个语言实际上是一样的,本身也包含了各个变量、语法之类的,
例如,现在有如下的一个程序:
|
public class TestDemo01{ public static void main(String args[]){ int x = 10 ; // 表示定义一个整型变量 int y = 20 ; // 表示定义一个整型变量 System.out.println(x + y) ; } } |
在以上的程序中,声明整型变量或者定义类的名称实际上都是存在一些命名要求的,这些有时候称为标识符。
在java中标识符有自己的规范,可以由字母、数字、下划线、$符号组成,其中不能以数字开头,也不能以关键字开头,因为关键字拥有特殊的含义,所以无法直接使用。
· 对于以上的原则,最好的做法是是一切的标识符以字母开头
Java中的关键字:

关键字补充说明:
¨ goto 和const也是Java的关键字,但是没有任何的意义,并不支持其使用
¨ assert是在JDK1.4之后增加进来的
¨ enum是在JDK1.5之后增加进来的
在java中除了有以上的这些关键字之外,还有很多的数据类型,整个java中存在基本数据类型和引用数据类型两种形式的数据类型。

基本数据类型本身表示的是一个个具体的数值,其本身有取值的范围。
数值型表示的是一个个的数字,主要分为以下两种:
¨ 整数类型:byte、short、int、long
¨ 小数类型:float、double
在整数类型中比较常用的类型就是int类型,直接表示一个整数。
byte类型的长度<short类型的长度<int类型的长度<long类型的长度

在使用的时候,之所以说int类型比较常用,是因为一个默认的数字的类型就是int类型。
|
public class TestDemo02{ public static void main(String args[]){ byte b = 300 ; } } |
编译以上代码,注意错误提示,将一个整型的数据赋值给byte类型的变量,可能丢失精度。以上的300是一个数字,那么只要是数字,在程序中都可以使用int类型进行表示。
而且,各个数据类型之间也可以进行转型的操作,转型的原则:位数小的类型转成位数大的类型将自动完成,如果相反,则必须强制完成
· byte à int:自动完成
· int à byte:强制完成
|
public class TestDemo03{ public static void main(String args[]){ int x = 30 ; byte b = (byte)x ; } } |
在数值型中还包含了float和double类型,其中double类型的数据可以存放的内容是最多的。一个默认的小数数字,其类型就是double类型。
|
public class TestDemo04{ public static void main(String args[]){ double x = 33.33111 ; System.out.println(x) ; } } |
那么,如果现在使用float接收以上的数字,则需要强制类型转换。
|
public class TestDemo05{ public static void main(String args[]){ float x = (float)33.33111 ; System.out.println(x) ; } } |
上面的程序也可以使用另外一种方式完成:
|
public class TestDemo05{ public static void main(String args[]){ float x = 33.33111f ; System.out.println(x) ; } } |
长整型的数据中也可以在数字后加一个“L”表示出来。
|
public class TestDemo06{ public static void main(String args[]){ long x = 30L ; System.out.println(x) ; } } |
面试题:请计算如下程序的结果:
|
System.out.println(1l + 11) ; |
字符型表示的是一个个的字符,只要是字符就要使用“'”括起来,例如,以下定义了一个字符:
|
public class TestDemo07{ public static void main(String args[]){ char c = 'A' ; // 使用'括起来,表示一个字符 System.out.println(c) ; } } |
在操作的时候,字符和int间也是可以进行互相转换的。
|
public class TestDemo08{ public static void main(String args[]){ char c = 'A' ; // 使用'括起来,表示一个字符 int x = c ; System.out.println(x) ; } } |
A变为数字之后是65,因为在java中使用的是unicode编码操作的。Unicode本身兼容ASCII码。
那么下面继续观察,让数字加一之后,变回字符。
|
public class TestDemo09{ public static void main(String args[]){ char c = 'A' ; // 使用'括起来,表示一个字符 int x = c ; x++ ; // x自增1 char y = (char)x ; System.out.println(y) ; } } |
在字符中,还需要注意的是,有一系列的转义字符:\\、\"、\'、\n、\t
这些转义字符有特殊的含义:
|
public class TestDemo10 { public static void main(String args[]){ System.out.println("\"hello\nw\torld\"") ; } } |
开发中以上的内容使用较多。
思考:一个字符能不能放下一个汉字?
在各个语言中都说过,一个汉字=两个字符,但是在java中由于使用了UNICODE编码,UNICODE编码属于16位的编码,所以可以放下任意的内容,所以在java中字符是可以存放汉字的。
|
public class TestDemo11 { public static void main(String args[]){ char c = '中' ; int x = c ; // 将c变为数字 System.out.println(c) ; System.out.println(x) ; } } |
布尔是一个数学家的名字,在boolean类型中,只有两种取值:true或false。
但是在这里要特别提醒的是,如果学习过C语言的同学们必须注意,在C语言中使用0表示false,使用非0表示true,但是这种特性在java中根本就不存在。
|
public class TestDemo12 { public static void main(String args[]){ boolean flag = true ; System.out.println(flag) ; } } |
从实际的程序来看,布尔类型的数据,往往作为程序的控制出现,与if之类的语句结合。
|
public class TestDemo13 { public static void main(String args[]){ boolean flag = true ; if(flag){ // flag==true System.out.println("欢迎光临!") ; } } } |
在之前的所有数据类型,都是表示一些基本的类型,但是如果现在要是想表示一串的字符,则就只能使用字符串进行表示,String表示一个字符串,但是String的开头首字母大写了,所以这是一个类,但是这个类使用起来较为特殊,可以按照基本数据类型的操作那样直接使用。
|
public class TestDemo14 { public static void main(String args[]){ String str = "世界啊,你好啊,我很好!!!" ; System.out.println(str) ; } } |
但是,在使用String的时候有一点是必须注意的。
· 默认情况下各个基本数据类型间是可以进行转型操作的:byte à short à int à long à float à double。但是所有的类型只要是碰到了String,则都会向String转换。
范例:观察基本类型的转型操作
|
public class TestDemo15 { public static void main(String args[]){ int x = 10 ; float y = 300.3f ; System.out.println(y / x) ; } } |
范例:下面使用String操作
|
public class TestDemo16 { public static void main(String args[]){ int x = 10 ; int y = 20 ; String str = "x " + " + " + " y " + " = " ; // 此时的“+”表示字符串连接 System.out.println(str + x + y) ; } } |
现在的结果是1020,并不是一个正确的结果,因为所有的数字首先都变成了字符串,实际上此处就属于字符串的连接操作。如果要想解决以上的问题,则就需要加上“()”,要求,先进行计算。
|
public class TestDemo16 { public static void main(String args[]){ int x = 10 ; int y = 20 ; String str = "x " + " + " + " y " + " = " ; // 此时的“+”表示字符串连接 System.out.println(str + (x + y)) ; } } |

以上是基本数据类型的默认值,比较好理解,如果是数字,默认值都是0,如果是字符,默认的是“''”,如果是boolean类型默认值是false。
|
public class TestDemo17 { public static void main(String args[]){ int x = 10 ; // 定义在主方法之中的话,变量的默认值是无效的 System.out.println(x) ; } } |
注意:定义在主方法之中的话,变量的默认值是无效的
之所以,每次编写代码的时候都加上一个“ ”,一方面是由于这样的话代码比较美观,另一方面,主要是由编译器造成的,如果不加“ ”的话有时候有可能出现一些未知的操作,造成不必要的麻烦。所以希望每一个人都养成每个代码之后加空格的习惯。
|
class Test33 { public static void main(String[] args) { btye b=2,e=3; //注释1 byte f=b+e; //注释2 System.out.println(f); //注释3 } } |
关于下面的程序,哪个选项的说法是正确的?(神州数码公司2005面试题)
A. 编译通过,运行时打印出5
B. 编译通过,运行时打印出23
C. 编译同不过,在//注释2处有错误
D.编译通不过,在//注释1处有错误
本题说明:本题正确答案是C,由于Java中涉及btye、Short和Char等类型的运算操作首先会把这些值转换为init类型,然后对int类型进行运算,最后得到int类型的结果。因此对于本题目中“//注释2”行正确的写法应该是:byte f=(byte)(b+e)。