java基础

一、.java源程序与编译型运行区别

二、对象和类

对象:对象是类的一个实例,有状态和行为。

类:类是一个模版,它描述了一类对象的状态和行为。

局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后变量自动销毁。局部变量是在栈上分配的。

成员变量:成员变量是定义在类中,方法体之外的变量。这种变量是在创建对象的时候初始化。成员变量可以被类中的方法、构造方法和特定类的语句块访问。成员变量是在堆内存的。

类变量:声明在类中,方法体之外,但必须声明为static类型。类变量存在于方法区。

抽象类:抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。一个类不能同时被abstract和final修饰。如果一个类中包含抽象方法,那么该类一定要声明为抽象类,否则编译出错。抽象类可以包含抽象方法和非抽象的方法。

抽象方法:抽象方法是一种没有任何实现的方法,该方法的具体实现由子类提供。抽象方法不能被不能为private,final或者static修饰。任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。

总结:

1.引用类型总是被分配到“堆”上,不论是成员变量还是局部

2.基础类型总是分配到它所声明的地方:成员变量在堆内存里,局部变量在栈内存里。 


三、源文件的声明规则

1.一个源文件中只能有一个public类

2.一个源文件可以有多个非public类

3.源文件的名称应该和public类的类名保持一致

4.如果一个类定义在某个包中,那么package语句应该在源文件的首行

5.如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该放在源文件的最前面

6.import语句和package语句对源文件中定义的所有类都有小。在同一源文件中,不能给不同的类不同的包声明。

四  、访问控制


五、关于StringBuffer和StringBuilder类

StringBuffer和StringBuilder类的对象能够被多次的修改,并且不产生新的未使用的对象。两者之间的区别在于:StringBuilder的方法不是线程安全的,不能同步访问,但StringBuilder相对与StringBuffer有速度优势。

六、构造方法

当一个对象被创建时,构造方法用来初始化该对象。构造方法和它所在类的名字相同,但是构造方法没有返回值。通常会使用构造方法给一个类的实例变量赋初值,或者执行其它必要的步骤来创建一个完整的对象。不管你定义与否,所有的类都有构造方法,因为java自动提供了一个默认的构造方法,它把所有成员初始化为0,一旦你定义了自己的构造方法,默认的构造方法就会失效。

七、文件流


获得一个输入流对象来读取文件:

1. 利用文件夹  InputStream f=new FileInputStream("c://test.txt");

2.文件对象    File f=new File("c://hello.txt");

InputStream out=new FileInputStream(f);

3.创建目录

string dirname="/tmp/user/java/bin";

File d=new File(dirname);

d.mkdir();//创建一个文件夹 返回ture/false

d.mkdirs();//创建一个文件夹和它的所有父文件夹。

4.读取目录

public class DirList {

    public static void main(String args[]) {

        String dirname = "/tmp";

        File f1 = new File(dirname);

        if (f1.isDirectory()) {

            System.out.println("目录 " + dirname);

            String s[] = f1.list();

            for (int i = 0; i < s.length; i++) {

                File f = new File(dirname + "/" + s[i]);

                if (f.isDirectory()) {

                    System.out.println(s[i] + " 是一个目录");

                } else {

                    System.out.println(s[i] + " 是一个文件");

                }

            }

        } else {

            System.out.println(dirname + " 不是一个目录");

        }

    }

}

5.删除目录java.io.File.delete()

需要注意的是当删除某一目录时,必须保证该目录下没有其他文件才能正确删除,否则将删除失败。

递归思想:

public class DeleteFileDemo {

    public static void main(String args[]) {

        // 这里修改为自己的测试目录

        File folder = new File("/tmp/java/");

        deleteFolder(folder);

    }

    // 删除文件及目录

    public static void deleteFolder(File folder) {

        File[] files = folder.listFiles();

        if (files != null) {

            for (File f : files) {

                if (f.isDirectory()) {

                    deleteFolder(f);

                } else {

                    f.delete();

                }

            }

        }

        folder.delete();

    }

}

八、异常处理

要理解Java异常处理是如何工作的,你需要掌握以下三种类型的异常:

    1.检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。

   2. 运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。

    3.错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。


九、接口

接口,在java中是一个抽象类型,是抽象方法的集合,接口通常以interface开声明。

接口和类的相似点

1.一个接口可以有多个方法

2.接口文件保存在.java.结尾的文件中,文件名使用接口名

3.接口的字节码文件保存在class结尾的文件中

4.接口相应的字节码必须与包名称相匹配的目录结构中

接口与类的区别:

1.接口不能用于实例化

2.接口没有构造函数

3.接口的所有方法必须是抽象方法

4.接口不能包含成员变量,除了static和final变量

5.接口不是被类继承,而是要被类实现

6.接口支持多继承

接口有以下特性:

接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。

接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。

接口中的方法都是公有的。

你可能感兴趣的:(java基础)