07 2020 档案
摘要:一、Java 线程实现/创建方式 注意: • 新建的线程不会自动开始运行,必须通过start( )方法启动 • 不能直接调用run()来启动线程,这样run()将作为一个普通方法立即执行,执行完毕前其他线程无法并发执行 • Java程序启动时,会立刻创建主线程,main就是在这个线程上运行。当不再产
阅读全文
摘要:一、JVM类加载机制 虚拟机把描述类的数据从 .class 文件加载到内存,并对数据进行校验,解析和初始化,最终形成可以被虚拟机直接使用的 java 类型。 JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这五个过程。 1.1 加载 加载是类加载过程中的一个阶段
阅读全文
摘要:一、内存模型及分区 JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接的交互。 JVM 分为堆区和栈区,还有方法区,初始化的对象放在堆里面,引用放在栈里面,class 类信息
阅读全文
摘要:对于 Java 数组的初始化,有以下两种方式: 静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度,如: //只是指定初始值,并没有指定数组的长度,但是系统为自动决定该数组的长度为4 String[] computers = {"Dell", "Lenovo", "Appl
阅读全文
摘要:sleep 的源码: pub1ic class Thread implements Runnable { //native 表示调用操作系统底层实现的方法 pub1ic static native void sleep(1ong millis) throws InterruptedException
阅读全文
摘要:Cloneable接口是Java开发中常用的一个接口, 它的作用是使一个类的实例能够将自身拷贝到另一个新的实例中,注意,这里所说的“拷贝”拷的是对象实例,而不是类的定义,进一步说,拷贝的是一个类的实例中各字段的值。 在开发过程中,拷贝实例是常见的一种操作,如果一个类中的字段较多,而我们又采用在客户端
阅读全文
摘要:Collection和Collections区别 java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。 java.util.Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全等操作。 然后还有
阅读全文
摘要:1. 通过new对象实现反射机制( 对象.getClass() ) 2. 通过路径实现反射机制( Class.forName("包名.类名") ) 3. 通过类名实现反射机制 ( 类名.Class ) 4. 通过类加载器xxxClassLoader.loadClass()传入类路径获取:通过类加载器
阅读全文
摘要:强引用 只要引用存在,垃圾回收器永远不会回收,在 Java 中最常见的就是强引用,把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引用变量引用时,它处于可达状态,它是不可能被垃圾回收机制回收的,即使该对象以后永远都不会被用到 JVM 也不会回收。因此强引用是造成 Java 内存
阅读全文
摘要:finalize是一个属于0bject类的一 个方法,而Object类是所有类的父类,该方法一般由垃圾回收器来调用,当我们调用system. gc()方法的时候,由垃圾回收器调用finalize() ,回收垃圾,一个对象是否可回收的最后判断。当然,这里的调用sysytem.gc() 只是建议JVM垃
阅读全文
摘要:1.定义多线程类的两种方式: a) extends Thread b) Implements Runnalbe2.线程的状态: a) new 新生态 b) 就绪状态(调用start方法后) c) 运行状态. d) 阻塞状态 i. sleep: 不会释放持有的对象锁 ii. join:等待另一个线程执
阅读全文
摘要:Collection 一、List (有序,可重复) 1、ArrayList底层用数组实现。线程不安全,效率高 2、LinkedList:底层用双向链表实现。线程不安全,效率高 3、Vector:底层用数组实现。线程安全,效率低 4、和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率
阅读全文
摘要:栈 1. 存放局部变量 2. 不可以被多个线程共享 3. 空间连续,速度快 堆 1. 存放对象 2. 可以被多个线程共享 3. 空间不连续,速度慢。但是灵活 方法区 1. 存放类的信息:代码、静态变量、字符串常量等 2. 可以被多个线程共享 3. 空间不连续,速度慢。但是灵活详细分析请看
阅读全文
摘要:方法重载(Overload): 两同(同一个类、同一个方法名)三不同(参数列表不同:;类型、个数、顺序) 返回值不同,构成重载吗? No 形参名称不同,构成重载吗? No 方法重写(0verride): 子类定义一个和父类方法名,参数完全相同的方法。 =: 方法名保持一致 >=: 子类权限修饰符可以
阅读全文
摘要:基本 数据类型 a) 数字 i.整数: byte(1 个字节) ,short(2 个字节),int(4个字节,整型常量默认该类型),long(8个字节) ii.浮点数: float(4 个字节) ,double(8 个字节,浮点常量默认为该类型) b) 字符char(2个字节) c) 布尔boole
阅读全文
摘要:标识符(给类、方法、变量起名): 1.以字母(采用 Unicode字符集)、下划线、$开头 2.其余部分可以是: 字母(采用Unicode 字符集)、下划线、$、 数字 3.不能为关键字
阅读全文
摘要:方法1:通过Scanner Scanner input = new Scanner(System. in); String S = input .nextLine(); input. close(); 方法2:通过BufferedReader BufferedReader input = new B
阅读全文
摘要:Java中对一个对象实现 java.io.Serializable 接口即序列化,主要是为了对该对象进行流式操作,如以字节流输出到文件等。 对于不想进行序列化的变量,使用transient关键字修饰。transient关键字的作用是:阻止实例中那些用此关键字修饰的的变量序列化;当对象被反序列化时,被
阅读全文
摘要:在Java中,所有的异常都有一个共同的祖先java.lang包中的Throwable类。Throwable:有 两个重要的子类: Exception (异常)和Error (错误),二者都是Java异常处理的重要子类,各自都包含大量子类。 一、Error ( 错误) :是程序无法处理的错误 表示运行
阅读全文
摘要:final关键字主要用在三个地方:变量、方法、类。 1. 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。2.当用final修饰一个类时,表明这个类不能被继承。final类中的所有成员方法都会被
阅读全文
摘要:线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。 线程特点: • 轻量级进程 •
阅读全文
摘要:值传递和引用传递: 值传递和引用传递的区别并不是传递的内容。而是实参到底有没有被复制一份给形参。在判断实参内容有没有受影响的时候,要看传的的是什么,如果你传递的是个地址,那么就看这个地址的变化会不会有影响,而不是看地址指向的对象的变化。 Java中当传递的参数是对象时,其实还是值传递的,只不过对于对
阅读全文
摘要:hashCode介绍: hashCode()的作用是获取哈希码,它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode()定义在JDK的Object.java中,这就意味着Java中的任何类都包含有hashCode()函数。散列表存储的是键值对(key-va
阅读全文
摘要:==: 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。(基本数据类型==比较的是值,引用数据类型==比较的是内存地址)equals(): 它的作用也是判断两个对象是否相等。但它一般有两种使用情况: ● 情况1: 类没有覆盖equals() 方法。则通过equals( 比较
阅读全文
摘要:1. 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。2. 静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制
阅读全文
摘要:1、名字与类名相同 2、没有返回值,但不能用void声明构造函数 3、生成类的对象时自动执行,无需调用(new 对象) 4、无参构造器问题: a) 如果我们没有手动定义构造器,系统会自动为我们添加一个无参的构造器 b) 如果我们自己定义了构造器,系统就不会为我们添加无参构造器.5、构造方法的 第一句
阅读全文
摘要:局部变量 定义在方法内或语句块内。 从属于方法或语句块。 使用之前,必须要手动初始化!成员变量(实例变量field) 定义在类里面、方法外面。 从属于对象! 如果我们没有手动初始化成员变量,系统会自动初始化。初始化的规则如下: 数字: 0,0.0,布尔: false,char:\u0000,引用类型
阅读全文
摘要:1. 接口的方法默认是public, 所有方法在接口中不能有实现(Java8开始接口方法可以有默认实现,default修饰),抽象类可以有非抽象的方法2. 接口中的实例变量默认是final 类型的(总是public static final),而抽象类中则不一定3. 一个类可以实现多个接口,但最多只
阅读全文
摘要:Java程序在执行子类的构造方法之前,如果没有用super() 来调用父类特定的构造方法,则会默认调用父类中”没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用super() 来调用父类中特定的构造方法,则编译时将发生错误,因为Java 程序在父类中找不到没
阅读全文
摘要:可变性: String 类使用final 关键字修饰的字符数组保存字符串(private final char value[]), 所以String 对象是不可变的。故如定义字符串String a="aaa",a=a+"bbb"其实是又重新定义了一个字符串为“aaabbb”,该字符串地址与原字符串a
阅读全文
摘要:封装: 封装把一个对象的部分属性私有化,隐藏类的细节,同时提供--些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了。 继承: 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新
阅读全文
摘要:在讲继承的时候我们就知道父类的私有属性和构造方法并不能被继承,所以Constructor也就不能被override(重写) ,但是可以overload (重载) ,所以你可以看到一个类中有多个构造函数的情况。
阅读全文
摘要:字符型常量和字符串常量的区别 1.形式上: 字符常量是单引号引起的一个字符,字符串常量是双引号引起的若千个字符2.含义上: 字符常量相当于一个整形值( ASCII 值),可以参加表达式运算;字符串常量代表一个地址值(该字符串在内存中存放位置,相当于对象)3. 占内存大小:字符常量只占2个字节;字符串
阅读全文
摘要:一个 程序中可以有多 个类,但只能有一个类是主类。 在Java 应用程序中, 这个主类是指包含main ()方法的类。而在Java 小程序中,这个主类是一个继承自系统类JApplet或Applet 的子类。应用程序的主类不一定要求是public类,但小程序的主类要求必须是public 类。主类是Ja
阅读全文
摘要:1、都是面向对象的语言,都支持封装、继承和多态2、Java不提供指针来直接访问内存,程序内存更加安全3、Java的类是单继承的,C++支持多重继承;虽然Java的类不可以多继承,但是接口可以多继承。 4、Java有自动内存管理机制,不需要程序员手动释放无用内存.
阅读全文
摘要:1. Oracle JDK版本将每三年发布一次,而OpenJDK版本每三个月发布一次;2. OpenJDK 是一个参考模型并且是完全开源的,而Oracle JDK是OpenJDK的一个实现,并不是完全开源的; 3. Oracle JDK比OpenJDK更稳定。OpenJDK 和Oracle JDK的
阅读全文
摘要:JVM Java虚拟机(JVM)是运行Java字节码的虚拟机。JVM有针对不同系统的特定实现(Windows、Linux、MacOS),目的是使用相同的字节码,他们都会给出相同的结果。(平台无关性) 字节码:在Java中,JVM可以理解的代码就叫做字节码(即扩展名为.class的文件),它不面向任何
阅读全文
摘要:1、简单易学 2、面向对象(封装、继承、多态) 3、平台无关性(JVM实现) 4、可靠性 5、安全性 6、支持多线程 7、支持网络编程 8、编译与解释并存
阅读全文
摘要:面向过程 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,因为性能对他们来说是最重要的因素。 缺点:没有面向对象易维护、易复用、易扩展。 面向对象 优点:易维护、易复用、易扩,由于面向对象有封装、继承和多态
阅读全文

浙公网安备 33010602011771号