---------------------- android培训、java培训、期待与您交流! ----------------------
在经过一段“白不懂夜的黑”的java学习,对于java基础总算有了一种莫名其妙的感觉,也许是这段日子朝夕相处吧,虽然还不能像老师那也游刃有余,还有些模糊的环节但是我相信会更上一层楼的。
这十多天的学习内容大致包括:
基础语法,类相关语法,内部类的语法,继承相关语法,异常的语法,线程的语法,集合的语法,io的语法,虚拟机的相关语法。
对于java的高新技术后边的一点框架用途,类标识和java API只是做了简单了解,当时就是这个样子,看的发晕~~~真的是代码实践的少啊
由于知识点多,且其中部分已经在前边的日志中总结过,所以这次就对其中的部分回顾总结:
1.内部类认识和引用
当描述事物的内部还有事物,该事物用内部类来描述。内部类可以直接访问外部类中的成员,包括私有。
因为内部类中持有一个外部类的一个引用,格式:外部类名.this
外部类要访问内部类,必须建立内部类的对象。格式:Outer.Inner in = new Outer().new Inner();
当内部类被 static 修饰后,只能直接访问外部类中的static 成员,出现了访问局限。
在外部其他类中,访问static内部类的非静态成员: new Outer.Inner().function();
在外部其他类中,访问static内部类静态成员:Outer.Inner.function();
注意:当内部类中定义了静态成员,该内部类必须是 static的。当外部类中的静态方法访问内部类时,内部类也必须是 static 的
2.单例设计模式--Windows中的回收站,只有一个实例
为了避免其他程序过多的简历该类对象,1)先禁止其他程序建立该对象2)为了让其他程序可以访问到该类对象,在本类中自定义个对象3)方便其他程序访问,提供访问方法。
此为饿汉式,一进内存就建立对象,方便安全
calss Single{
private Single(){}
private static Single s= new single();
public statin Single getInstance(){
return s;}
}}
... Single s1 = Single.getInstance();
懒汉式,single类被调用进入内存,判断对象没存在,再调用接口建立对象
class single2{
private static single s=null;
private single(){}
public static synchronized single getInstance(){
if(s==null){
s=new single;
return s;}}
对象延时性加载,由于上锁对线程判断的过程,影响了进程的效率。
3.抽象类--老板给员工的项目任务摘要
java中可以定义一些不含方法体的方法,它的方法体的实现交给该类的子类根据自己的情况去实现,这样的方法就是抽象方法,包含抽象方法的类就叫抽象类。
作用:提取出来的抽象功能表示出来,提高代码的复用性。
特点:1)抽象方法一定在抽象类中2)抽象的类和方法都必须被abstract关键字修饰3)抽象类不可用new创建对象,因为调用无意义4)如果抽象类中的抽象方法要被调用,必须有子类复写起所有的抽象方法,才建立子类的调用。
注意:如果子类只覆盖了部分抽象方法,那么子类也被传染成了抽象类。抽象类可以有构造方法和静态方法,为了让其他程序调用,抽象类也有非抽象方法和普通成员变量。
abstract class Student {
abstract void study();}
class A extends Student{
void study{System.out.print("需要复写study方法1")}
class B extends Student{
void study{System.out.print("需要复写study方法2")}
4.接口Interface--代码块之间的通信契约
可以理解为一个特殊的抽象类,当抽象类中的方法都是抽象的,则该类可以用接口来表示,接口更多的是在系统构架设计发挥作用。
作用:对外暴露自己的规则,扩展程序的功能,由于类是单继承的,当一个类还想拥有其他的类的功能扩展时,只能来当接口的小弟符合接口的规则才可以扩展功能,
所以接口可以被多类实现(当然接口没有具体内容的方法体):class object implements JK1 , JK2
接口也可以被多接口继承: Interface JK1 extends JK2 , JK3
接口和抽象类都不可以创建对象,因为有抽象方法,其成员都是public来修饰,常量默认为 public static final,方法默认修饰为 public abstract (接口不可以有静态方法)
interface Inter {
public static final Num=3
public abstract void show();
}
class Test implements Inter{
public void show(){}
}
class InterfaceDemo{
public static void main (Strings[] args){
Test t = new Test();
Syetem.out.println(t.Num); // 3
Syetem.out.println(Inter.Num); // 3
Syetem.out.println(Test.Num); // 3}
}
5.异常--卖可能发霉的面包
对于程序的运行难免会出现异常,严重的要用Error类描述对于Error一般不编写针对性的代码进行处理。不严重的要用Exception类进行描述,可以使用针对性的处理方式进行处理。jvm会把异常报告给程序员,甚至有的类和方法调用本身都有要声明可能要出现的异常,所以在调用的时候要处理该异常,throws给虚拟机或下个引用者,或者自己try-catch处理。
异常的处理方式是:
try{
需要被检测的代码;
}
catch(异常类 变量){ 处理异常的代码
e.getMessage(); //输出异常信息
e.tostring();
e.printStackTrace(); //输出详细的异常信息
}finally{
一定会运行的代码
}
用try-catch跳转
try
{ if(x==0)
throw Exception1
else
throw Exception2
}
catch(Exception1 e)
{
//x==0时需要执行的代码}
catch(Exception2 e){
//x!=0时需要执行的代码
}
对捕获到的异常对象进行常见方法操作。
下面总结几个常见的异常类
算术异常类:ArithmeticExecption
空指针异常类:NullPointerException
类型强制转换异常:ClassCastException
数组下标越界异常:ArrayIndexOutOfBoundsException
文件未找到异常:FileNotFoundException
字符串转换为数字异常:NumberFormatException
输入输出异常:IOException
方法未找到异常:NoSuchMethodException
---------------------- android培训、java培训、期待与您交流! ----------------------