java基础总结大全
一、 基础知识 1、JVM、JRE 和 JDK 的区别 JVMJava Virtual Machinejava 虚拟机,用于保证 java 的跨平台的特性。 java 语言是跨平台,jvm 不是跨平台的。 JREJava Runtime Environmentjava 的运行环境,包括 jvmjava 的核心类库。 JDKJava Development Kitjava 的开发工具,包括 jre开发工具 2、环境变量 path 和 classpath 的作用是什么 1path 是配置 Windows 可执行文件的搜索路径,即扩展名为. 的程序文件所在的目录, 用于指定 DOS 窗口命令的路径。 2Classpath 是配置 class 文件所在的目录,用于指定类搜索路径,JVM 就是通过它来寻找该类的 class 类文件的。 3、变量有什么用为什么要定义变量什么时候用 答变量的作用用来存储数据。 为什么要定义变量用来不断的存放同一类型的常量,并可以重复使用 4、在内存中做了哪些事情。 1将 Person.class 文件加载进内存中。 2如果 p 定义在主方法中,那么,就会在栈空间开辟一个变量空间 p。 3在堆内存给对象分配空间。 4对对象中的成员进行默认初始化。 5对对象中的成员进行显示初始化。 6调用构造代码块对对象进行初始化。如果没有就不执行 7调用构造方法对对象进行初始化。对象初始化完毕。 8将对象的内存地址赋值给 p 变量,让 p 变量指向该对象。 11、static 关键字 1静态的意思,用来修饰成员变量和成员函数 2静态的特点 随着类的加载而加载 优先于对象存在 对所有对象共享 可以被类名直接调用 3静态的注意事项 A静态方法只能访问静态成员 为什么因为静态的内容是随着类的加载而加载,它是先进内存的。 B静态方法中不能使用 this,super 关键字 C主方法是静态的 public static void mainString[] args public公共的意思,是最大权限修饰符。 static由于 jvm 调用 main 方法的时候,没有创建对象。 只能通过类名调用。所以,main 必须用 static 修饰。 void由于 main 方法是被 jvm 调用,不需要返回值。用 void 修饰。 mainmain 是主要的意思,所以 jvm 采用了这个名字。是程序的入口。 String[]字符串数组 args数组名 在运行的时候,通过 java 命令给 args 数组赋值。 格式java MainTest hello world itcast 4静态变量和成员变量的区别 A调用方式 静态变量也称为类变量,可以直接通过类名调用。也可以通过对象名调用。 这个变量属于类。 成员变量也称为实例变量,只能通过对象名调用。这个变量属于对象。 B存储位置 静态变量存储在方法区长中的静态区。 成员变量存储在堆内存。 C生命周期 静态变量随着类的加载而存在,随着类的消失而消失。生命周期长。 成员变量随着对象的创建而存在,随着对象的消失而消失。 D与对象的相关性 静态变量是所有对象共享的数据。 成员变量是每个对象所特有的数据。 5静态的优点和弊端 优点 对对象的共享数据进行单独空间的存储,节省内存,没有必要每个对象都存储一份 可直接被类名调用 弊端 生命周期过长,随着类的消失而消失 访问出现权限,即静态虽好但只能访问静态 6什么使用使用静态呢 A当所有对象共享某个数据的时候,就把这个成员变量定义为静态修饰的。 B当某个方法没有访问该类中的非静态成员,就可以把这个方法定义为静态修饰。 静态的生命周期比较长,所以一般不推荐使用。 7静态代码块 A它只执行一次,它比 main 还先执行。 B执行顺序 静态代码块--构造代码块--构造方法 12、制作 API次重点 API全拼Application Program Interface 应用程序编程接口。 1类中的内容需要用文档注释。 2使用 JDK\bin 目录下的 javadoc 工具。 格式javadoc -d 目录 -author -version ArrayTool.java 13、单例设计模式 1设计模式 解决某类问题行之有效的方法,是一种思想,是规律的总结 2用来保证某个类在内存中只有一个对象 3保证唯一性的思想及步骤 **为了避免其他程序建立该类对象,先禁止其他程序建立该类对象,即将构造函数私有化 **为了其他程序访问到该类对象,须在本类中创建一个该类私有对象 **为了方便其他程序访问到该类对象,可对外提供一个公共访问方式 比如 API 中的 Runtime 类就是单例设计模式。 4单例设计模式的两种方式 A饿汉式 当类加载的时候,就创建对象。 class Student { private Student{} private static final Student s new Student; public static Student getInstance { return s; } } B懒汉式 当使用的使用,才去创建对象。 class Student { private Student{} private static final Student s null; public static Student getInstance { ifsnull { //线程 1 就进来了,线程 2 就进来了。 s new Student; } return s; } } 饿汉式和懒汉式的区别 ** 饿汉式是类一加载进内存就创建好了对象; 懒汉式则是类才加载进内存的时候,对象还没有存在,只有调用了 getInstance方法时, 对象才开始创建。 ** 懒汉式是延迟加载,如果多个线程同时操作懒汉式时就有可能出现线程安全问题,解决线程安全问题 可以加同步来解决。但是加了同步之后,每一次都要比较锁,效率就变慢了, 所以可以加双重判断来提高程序效率。 注开发常用饿汉式,因为饿汉式简单安全。懒汉式多线程的时候容易发生问题 14、Math 类的使用重点 1数学操作类该类没有构造函数,方法均为静态的 2掌握内容 A成员变量 **E比任何其他值都更接近 e(即自然对数的底数)的 double 值。 **PI比任何其他值都更接近 pi(即圆的周长与直径之比)的 double 值。 B成员方法 **static double absdouble a 返回 double 值的绝对值。返回绝对值 **static double ceildouble a 返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。 **static double floordouble a 返回最大的(最接近正无穷大)double 值,该值小于