再回首Java第十五天

类的加载

当程序主动使用某个类是,如果该类还没有被加载到内存中,系统就会通过加载、链接、初始化三个步骤对该类进行初始化,如果没有意外,JVM就会完成这三个步骤,所以有时也把这三个步骤称为类的加载和类的初始化。

类的加载是指将类的class文件读入内存,并为之创建一个java.lang.Class对象,也就是说当程序中使用任何类时,系统都会为之创建一个java.lang.Class对象

类的加载由类的加载器完成,类加载器通常由JVM提供,这些类加载器是程序运行的基础,JVM提供的加载器其称为系统加载器,除此之外,开发者还可以通过继承ClassLoader基类来创建自己的加载器

通过不同的加载器,可以从不同的来源加载二进制数据

  • 从本地加载class文件
  • 从JAR包中加载class文件
  • 通过网络加载class文件
  • 把一个Java源文件动态编译并加载

类加载器无须等到首次使用该类才加载, Java虚拟机规范允许预先加载某些类

时间: 2024-12-26 12:54:33

再回首Java第十五天的相关文章

再回首Java第二十五天

流的分类按照流的流向来分,可以分为输入流和输出流?输入流:只能从中读取数据,不能向其写数据?输出流:只能向其写数据,不从能从中读数据 Java输入流主要有InputStream和Reader作为基类,Java输出流主要以OutputStream和Writer作为基类 字节流和字符流字节流和字符流的用法几乎完全一样,区别在于字节流和字符流所操作的数据单元不一样:字节流操作的最小数据单元是8位的字节,而字符流操作的最小数据单元是16位的字符 节点流和处理流可以从向一个特定的IO设备(如磁盘.网络)读

JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题

JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序员杜鹏程的博客:http://blog.csdn.net/m366917 我们来继续学习多线程 Lock锁的使用 虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock Lock void lock():获取锁 v

再回首Java第二十六天

推回输入流在Java输入.输出流体系中有两个特殊的流与众不同,就是PushbackInputStream/PashbackReader,它们都提供了如下三个方法:?void unread(byte[]/char[] buf):将以一个字节/字符数组内容推回到推回缓冲区里,从而允许重复读取刚刚读取的内容.?void unread(byte[] /char[] buf, int off,int ben):把一个字节/字符数组从off开始,长度为len字节/字符的内容推回到推回缓冲区里,从而允许重复读

再回首Java第二十四天

Callable和FutureJava1.5开始,Java提供了Callable接口,Callable接口提供了一个call()方法作为线程的执行体,但call()方法run()方法的功能更强大:?call()方法可以有返回值?call()方法可以声明抛出异常因此我们完全可以提供一个Callable对象作为Thread的target,而该线程的执行体就是该Callable对象的call方法.问题是:Callable对象时JDK1.5开始新增的接口,而它并不是Runnable的子接口,所以Call

再回首Java第十四天

Calendar的实例方法setLenient(boolean bool)用于设置其容错性 Calendar两种的模式:lenient模式和no-lenient模式,当Calendar处于lenient模式时,每个时间字段可以接受超出它允许范围的值.当处于no-lenient模式时,当某个时间字段设置的值超出了它允许的范围,程序将抛出异常. set方法延迟修改 set(f,value)方法将日历字段f更改为value,此外它还设置了一个内部成员变量,以指示日历字段已被修改.尽管日历字段f是立即修

再回首Java第十天

内部类 大部分时候,我们把类定义成一个独立的程序单元.在某些情况下,我们需要把一个类放在另一个类的内部定义,这个定义在其它类内部的类被称为内部类(嵌套类),包含内部类的类称为外部类(宿主类).内部类有如下作用 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同包的其它类访问.假设创建Cow这个类,需要组合CowLeg的属性,CowLeg属性只有在Cow类中有效,离开了Cow类就没有意义,这种情况下可以把CowLeg定义成Cow的内部类,不允许其它外部的类访问 内部类成员可以直接访问外

再回首Java第十九天

类加载机制 JVM的类加载机制主要有一下三种加载机制 全盘负责:所谓全盘负责就是说当一个类加载器负责加载某个Class的时候,该Class所依赖和引用的其它的Class都由该类加载器负责加载,除非显式使用另一个类加载器来载入 父类委托:所谓父类委托则是先让父类加载器试图加载该Class,只有在父类加载器无法加载时才从自己的类路径中加载该类 缓存机制:缓存机制保证所有被加载的Class都会被缓存,当程序中使用某个Class时,类加载器先从缓存中寻找该Class,只有当缓存中不存在该Class时,系

java(第十五章)

第十五章 一.字符串类String 1.String是一个类,位于java.lang包中 2.创建一个字符串对象的2种方式: String 变量名="值"; String 对象名=new String("值"); 3.字符串的常用方法 3.1 字符串长度--length() 3.2 判断值是否相等 equals() 3.3 判断字符串对象地址是否相同 == 3.4 忽略 大小写 判断 equalsIgnoreCase() 3.5 大小写转换 toLowerCase(

Java之十五 JDBC编程

有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事.换言之,有了JDBCAPI,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBCAPI写一个程序就够了,它可向相应数据库发送SQL调用.同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言"编写一次,处处运行"的优势. Java数