1.JAVA的数据类型划分
一、JAVA共八种基本数据类型,其他都是引用数据类型。
①.布尔型 boolean :布尔型变量只有true和false两种结果。
值得注意的是不可以把数字赋值给布尔类型的变量。如boolean b=5;是错误的。
②.字符型 char :每个字符占用两个字节的空间。
美国的ASCII码中只记录了128个常用字符,这样的量对于使用汉字的中国显然是太少了,所以中国人整合出GB2312,其中每个字符占用四个字节的存储空间,其中包含了6763个简体中文汉字,为了囊括进台湾和香港等地一直还在使用的繁体字还制作出GBK,这个比GB2312所包含的汉字更多。
更霸气的是Unicode,它也因此有个很霸气的名字叫万国码,之所以这么叫是因为它为每种语言的每个字符设定了统一并且唯一的二进制编码。
表示方法为char c='\u????';其中每一个?代表一个十六进制数。如'\u5555'则是啕。
③.整数类型 (byte,short,int,long)
byte 占用一个字节的空间
short 占用两个字节的空间
int 占用四个字节的空间
long 占用八个字节的空间
整数的表示方式:
2 表示十进制的2
077 首位是0表示这是一个八进制的数值
0*BAAC 0*表示这是一个十六进制的数值
④.浮点型 float和double
float 占用四个字节的空间
double 占用八个字节的空间
所以double表示的数值范围更大,JAVA默认的是若是java代码中有包含小数点的数,则系统默认为double型。
如:float f=0.1234567;则系统会报错,因为系统认为0.1234567是一个double类型的数值并为其分配了八个字节的空间,现在要将其赋值给一个占用四个字节的float型的变量,会报损失精度的错误。
可是要新建一个float型的变量并为其赋值怎么做才对呢?正确的方法是 float f=0.123f;在小数的最后面加一个f。
平时要用到小数的时候尽量用double型,不易出错。
double虽然能表示的数值范围还算可以,不过现实生活中金融行业要计算大量的金钱,仅仅用double是不够的,表示金钱的数字被省略几位,哪怕是后面的几位显然也是不允许的。
金融行业又有新的小数类型,BigInteger大整数和BigDecimal大的小数。老师没多做介绍,不知道是不常用还是以后会讲。
二、 基本数据类型之间的转换
1.隐式类型转换
如:
2.强制(显式)类型转换
如:int i=(int)'A'; 这样会得到A的ASCII码值65。
int i=(int)1.56;若要输出i,则输出结果为1,这里不存在四舍五入。
boolean和整数类型之间不可以转换。
三、判断以下三个段代码输出的内容是什么。
System.out.println('a'+1);
System.out.println(""+'a'+1);
System.out.println('a'+1+"");
java里的“+”可以用作运算符重载,也只有“+”可以用于运算符重载。它有两种用法,一是字符串连接,二是数学运算。
当“+”两边只要有一边是字符串时,则为字符串连接。两边都不是字符串才是算数运算。
以上三段代码的结果分别为98,a1,98。但两个98外表一样实则有所不同,分别为整数和字符串。
四、数组 array
1.数组也属于引用数据类型,但数组中的元素既可以是基本数据类型,也可以是引用数据类型。
以下定义数组的方式都是正确的。
int a[];和 int[] a;
int a[]=new int[5];
int a[]=new int[]{1,2,3,4,5};
int a[]={1,2,3,4,5};
但以下两种定义方法是错误的:
int a[5];
JAVA规定定义数组名时的[]内不能写表示数组长度即数组所包含元素个数的数值。
int a[]=new int[5]{1,2,3,4,5};
JAVA为了预防出错,当后边有大括号列出数组的各元素时,前面中括号内不能再写表示元素的个数的数值,及时这个数值跟后面的元素个数值相等也不可以。
2.数组名.length 可以获取数组的长度。
3.比较两个数组内容是否相同,像String一样使用equels不可以,数组也有自己的equels,用法是Arrays.equals(数组1,数组2);
但是使用这个方法的时候,要在程序的开头写上import java.util.Arrays;
JAVA中唯一有特权的包是java.lang因为其中的方法一般都是最常用的所以不用写,其他包则一定要写。
4.多维数组
5.匿名数组
如new int[]{1,2,3,4,5}; 即int a[]=new int[]{1,2,3,4,5};左边的变量名字不要了。
五、基本输出 printf
如:int i=7;System.out.printf("%d\n",i);若是print则不能这样用。
上面代码中用%d则后面的i是一个整数类型的变量;%c则代表字符类型的变量。
这样写也没问题int i=7;System.out.printf(i+"%d\n",i);
六、引用数据类型
JAVA中除了八种基本数据类型之外其他全是引用数据类型。
引用数据类型的定义格式:如:String s=new string("abcd"); new的作用是在内存(堆)中开辟新的存储空间。"abcd"存储在堆中,这是会产生一个存放这个字符串的地址的数据,这个地址会存放在堆栈中,地址为32位,即四个字节。
32位机的地址记录为32位,也就是4个字节;而64位机的地址记录为64为,就是八个字节。但一般32位机已经足够用。
七、JAVA的foreach循环
JAVA里没有foreach这个关键字,这个foreach产生于dotnet,但是JAVA不甘落后,又不想改变的与for相差太多,所以依然用for。
格式是: for(数组类型 x :数组名){ 循环体 }
这样的foreach循环一般在数组元素遍历时用到,这样写会比通常的for循环那样写更方便,但是foreach循环内不可对数组的各元素采取新的赋值操作。
如:int arr[]=new int[]{1,2,3,4,5};
for(int x:arr){x=5;} 是不能把arr的各个元素都赋值成5的。 原因是x是基本数据类型,它不指向数组元素的地址,只代表数字本身而已。
八、今天学习的几个方法。
1.toCharArray() 用于数组和字符串之间的转换。
2.CharAt(整数n) 用于获取字符串中第n个字符。
3.startsWith(String) 找出数组中开头为括号中字符串的元素。
4.endsWith(String) 找出数组中末尾为括号中字符串的元素。
5.contains(String) 找出数组中包含括号中字符串的元素。
6.replace(oldchar,newchar) 跟word里的查找替换一样。
九、api文档的使用
上面列出的几个方法在java安装包的api里都有详细的解释,所以要学会并熟练使用api。路径:Java\jdk1.6.0_38\docs\api
其中java.lang和java.util两个包最常用。