第5、6、8、9章学习
第5章 核心类
封装类
1.封装类:
java语言认为一切皆对象。
8个基本数据类型野应该具备对应的对象。
通过封装类可以把8个基本类型的值封装对象进行使用。
从JDK1.5开始,java允许把基本类型的值直接赋值给对应的封装类对象。
2.封装类的实例:
int a=10;
Integer o=new Integer(10);
8中数据类型的封装类只有int 和char的封装类会改变,Integer 和Character
3.封装类的作用:
a.将字符串的值转换为基本类型。int a=new Integer(“100”);
b.基本类型的值转换成字符串。int a=10; String c=a+“ ”;或者 String b =Integer.toString(100);装箱和拆箱
1.装箱和拆箱 →本质是基本类型和其封装类之间能自动进行转换
定义:装箱指的是把基本数据类型值转换成封装对象,即把栈中的数据封装成对象存放到堆中的过程。拆箱是装箱的反过程。装箱操作是数据由栈道堆,拆箱是数据由堆到栈。
Object
1.object对象类定义在java.lang包中,是所以类的顶级父类,在java体系中,所有类都直接或者间接的继承了object类,所以,任何java对象都可以调用object类中的方法,而且任何类型的对象都可以赋给object类型的变量。
2.equals()方法:判断指定的对象和传入的对象是否相等。
toString()方法:返回当前对象的字符串表示。
”==“和equals()两者比较,前者比较的地址是否相对,即是否同一个对象,后者比较的是值是否相等
toString()方法要输出对象的详细信息时,需要对toString()方法进行重写,否则会输出代表对象信息的表示字符串。 toString()方法没有参数,可直接返回值需要的信息内容。如,return this.name;
两个引用类型的对象的比较是否相等有两种方式:
a.“==”运算符表示的是两个对象的地址是否相同,即引用的是同一个对象。
b.equals()方法通常用于比较两个对象的内容是否相同。
public class test{
public static void main (String args){
int a=2;
int b=2;
System.out.println("a==b:"+(a==b)); //→输出结果是:true
System.out.println("a.quals(b):"+(a.quals(b))); // →输出结果是:true
Integer c=new Integer(2);
Integer d=new Integer(2);
System.out.println("c==d:"+(c==d)); // →输出结果是:false
System.out.println("a.quals(b):"+(a.quals(b))); // →输出结果是:true
}
}
字符串类
1.String类(字符串常量)→subString是截取字符串的方法。length是字符串长度的方法。int compare(String s)是比较两个字符串的大小,相等返回0,不相等返回不相等字符编码值的差。
2.StringBuffer类(字符串可以改变,线程安全)→append(String str)在字符串末尾追加一个字符串。char charAt(int index)返回指定下标的字符。intcapacity()表示返回字符串缓冲区容量。
3.StringBuilder类(字符串可以改变,线程不安全,因此性能比 StringBuffer 好)
要点:StringBuffer是线程同步的,StringBuilder是异步;对不经常变化的字符串使用String即可。经常变化、正在拼装的字符串不用String。若是全局变量,可能多线程引用,使用StringBuffer;若是局部变量,单线程使用,推荐StringBuilder。 (了解同步和异步就能理解他们的线程区别)Scanner类
Scanner类是用于接收用户的键盘输入,和对字符串的格式化处理。
写法:Scanner s=new Scanner(System.in); String s1=s.next();Math和Date类
1.用作数学运算的类是Math。 Math.random();获取一个随机数
2.用作日期处理的类是Date。示 例:Date dateNow=new Dtae();得到当前的日期
第6章 数组
Java 中定义数组的语法有两种:
type arrayName[];
type[] arrayName;
type 为Java中的任意数据类型,包括基本类型和组合类型,arrayName为数组名,必须是一个合法的标识符,[ ] 指明该变量是一个数组类型变量。例如:
- int demoArray[];
- int[] demoArray;
这两种形式没有区别,使用效果完全一样,读者可根据自己的编程习惯选择。
与C、C++不同,Java在定义数组时并不为数组元素分配内存,因此[ ]中无需指定数组元素的个数,即数组长度。而且对于如上定义的一个数组是不能访问它的任何元素的,我们必须要为它分配内存空间,这时要用到运算符new,其格式如下:
arrayName=new type[arraySize];
其中,arraySize 为数组的长度,type 为数组的类型。如:
- demoArray=new int[3];
为一个整型数组分配3个int 型整数所占据的内存空间。
通常,你可以在定义的同时分配空间,语法为:
type arrayName[] = new type[arraySize];
- 数组的初始化
你可以在声明数组的同时进行初始化(静态初始化),也可以在声明以后进行初始化(动态初始化)。
数组引用
可以通过下标来引用数组:
arrayName[index];
与C、C++不同,Java对数组元素要进行越界检查以保证安全性。
每个数组都有一个length属性来指明它的长度,例如 intArray.length 指明数组 intArray 的长度。
- 数组的遍历
实际开发中,经常需要遍历数组以获取数组中的每一个元素。最容易想到的方法是for循环,例如:
- int arrayDemo[] = {1, 2, 4, 7, 9, 192, 100};
- for(int i=0,len=arrayDemo.length; i
- System.out.println(arrayDemo[i] + ", ");
- }
输出结果:
1, 2, 4, 7, 9, 192, 100,
不过,Java提供了”增强版“的for循环,专门用来遍历数组,语法为:
- for( arrayType varName: arrayName ){
- // Some Code
- }
arrayType 为数组类型(也是数组元素的类型);varName 是用来保存当前元素的变量,每次循环它的值都会改变;arrayName 为数组名称。
每循环一次,就会获取数组中下一个元素的值,保存到 varName 变量,直到数组结束。即,第一次循环 varName 的值为第0个元素,第二次循环为第1个元素......例如:
- int arrayDemo[] = {1, 2, 4, 7, 9, 192, 100};
- for(int x: arrayDemo){
- System.out.println(x + ", ");
- }
输出结果与上面相同。
这种增强版的for循环也被称为”foreach循环“,它是普通for循环语句的特殊简化版。所有的foreach循环都可以被改写成for循环。
但是,如果你希望使用数组的索引,那么增强版的 for 循环无法做到。
- 二维数组
二维数组的声明、初始化和引用与一维数组相似:
- int intArray[ ][ ] = { {1,2}, {2,3}, {4,5} };
- int a[ ][ ] = new int[2][3];
- a[0][0] = 12;
- a[0][1] = 34;
- // ......
- a[1][2] = 93;
Java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同。例如: - int intArray[ ][ ] = { {1,2}, {2,3}, {3,4,5} };
- int a[ ][ ] = new int[2][ ];
- a[0] = new int[3];
a[1] = new int[5];
第8章 错误处理
- 捕获异常
使用 try 和 catch 关键字可以捕获异常。try/catch 代码块放在异常可能发生的地方。
try/catch代码块中的代码称为保护代码,使用 try/catch 的语法如下:
try
{
// 程序代码
}catch(ExceptionName e1)
{
//Catch 块
}
Catch 语句包含要捕获异常类型的声明。当保护代码块中发生一个异常时,try 后面的 catch 块就会被检查。
如果发生的异常包含在 catch 块中,异常会被传递到该 catch 块,这和传递一个参数到方法是一样。
throws/throw 关键字:
如果一个方法没有捕获到一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。
也可以使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。
finally关键字
finally 关键字用来创建在 try 代码块后面执行的代码块。
无论是否发生异常,finally 代码块中的代码总会被执行。
在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。
finally 代码块出现在 catch 代码块最后,语法如下:
try{ // 程序代码 }catch(异常类型1 异常的变量名1){ // 程序代码 }catch(异常类型2 异常的变量名2){ // 程序代码 }finally{ // 程序代码 }
第9章 操作数字
将基本类型转换为一个包装类对象,这叫做装箱;而从一个包装类对象转换为基本类型,叫做拆箱。
数字解析的目的是将一个字符串转换为一个数字基本类型。如果解析失败,例如,由于字符串不是一个数字或者一个超出了指定范围的数字,程序会抛出一个异常。
数字格式化使得数字更有可读性。