Java
named tree
这个作者很懒,什么都没留下…
展开
-
String,StringBuffer,StringBuilder的区别及其源码分析(一)
String,StringBuffer,StringBuilder的区别这个问题几乎是面试必问的题,这里做了一些总结:1.先来分析一下这三个类之间的关系(都是通过字符数组来实现的) 乍一看它们都是用于处理字符串的java类,而且长得也都差不多,相信肯定有人会以为StringBuffer和StringBuilder都是继承自String这个类,即认为String类是其他两个类的超类。这种想法似乎很...转载 2018-05-01 18:15:53 · 108 阅读 · 0 评论 -
Java的垃圾回收机制
在Java中,当一个对象成为垃圾后仍会占用内存空间,时间一长,就会导致内存空间的不足。针对这种情况,Java引入了垃圾回收机制,Java虚拟机会自动回收垃圾对象所占用的内存空间。 当对象成为垃圾对象后会暂时的保存在内存中, 当这样的垃圾对象达到一定数量后, Java虚拟机就会启动 垃圾回收器 将这些垃圾对象从内存中清除。除了等待Java虚拟机自动回收, 也可以调用System.gc() 方法...原创 2018-05-24 21:47:29 · 1954 阅读 · 0 评论 -
内部类
根据内部类的位置、修饰符和定义的方式可分为成员内部类、 静态内部类、 方法内部类。一、 成员内部类 在成员内部类中, 可以访问外部类中的所有成员。如果想通过外部类去访问内部类,则需要通过外部类对象去创建内部类对象,创建的语法如下: 外部类名.内部类名 变量名 = new 外部类名().new 内部类名();注意:如果内部类被声明为私有,外界将无法访问二、静态内部类 静态内部类可以在不创建外部类...原创 2018-05-24 22:20:00 · 161 阅读 · 0 评论 -
重写父类方法
在继承关系中,子类有时需要对继承的方法进行一些修改,即对父类的方法进重写。 需要注意的是在子类重写的方法需要和父类被重写的方法具有相同的方法名、 参数列表以及 返回值类型。 注意: 在子类重写父类方法时, 不能使用比父类中被重写的方法更严格的访问权限。...原创 2018-05-24 22:27:52 · 1252 阅读 · 0 评论 -
super关键字
当子类重写父类的方法后,子类对象将无法访问父类被重写的方法, 为了解决这个问题,在Java中专门提供了一个super关键字用于访问父类的成员。例如访问父类的成员变量, 成员方法、 构造方法。 一、使用super 关键字调用父类的成员变量和成员方法, 具体格式如下: super.成员变量super.成员方法([参数1, 参数2...])二、使用super关键字调用父类的构造方法。supe...原创 2018-05-24 23:46:06 · 121 阅读 · 0 评论 -
Java语言的访问控制
在Java中,针对类成员方法和属性提供了四种访问级别, 分别是 private、 default、 protected 和 public。 1、private(类访问级别): 如果类的成员被private 访问控制符来修饰, 则这个成员只能被该类的其他成员访问, 其他类无法直接访问。类的良好封装性 就是通过private 关键字来实现的。 2、default(包访问级别): 如果一个类或者...原创 2018-06-05 19:41:50 · 512 阅读 · 0 评论 -
Java线程的创建
多线程就是指一个应用程序中有多个并发执行的线程,它们对交替执行, 彼此间可以进行通信。在一个操作系统中每一个应用程序J就是一个进程, 也就是“正在运行的程序”在一个进程中可以有多个单元同时运行,这些单元被成为线程。操作系统中的每一个进程中都至少存在一个线程。 当一个Java程序启动时, 就会产生一个进程, 该进程会默认创建一个线程,在这个线程上会运行main() 方法中的代码。 Java...原创 2018-06-05 21:16:20 · 158 阅读 · 0 评论 -
线程的生命周期及状态转换
在Java中任何对象都有生命周期, 线程也不例外,线程的创建即是线程的生命周期的开始,当run() 方法执行完毕, 或者线程抛出一个未捕获的异常 或者 错误的时候, 线程的生命周期就结束了。 Java线程的生命周期分为5个阶段: 新建状态、就绪状态、 运行状态、 阻塞状态、 死亡状态。在程序中, 可以通过一些操作, 可以使线程在不同状态中进行转换。如下图: 1、新建状态(New): 此...原创 2018-06-05 21:41:18 · 2130 阅读 · 0 评论 -
线程的调度
Java虚拟机会按照特定的机制为程序中的每个线程分配CPU的使用权, 这种机制被称为线程的调度。 在计算机中,线程调度有两种模型,分别是 分时调度模型 和 抢占式调度模型。 Java 虚拟机默认采用抢占式调度模型, 但在特定的需求下需要改变这种模式, 由程序自己来控制CPU的调度。 一、 线程的优先级 线程的优先级用1-10之间的整数来表示,数字越大, 优先级越高。可以通过Thread 类...原创 2018-06-05 23:24:15 · 511 阅读 · 0 评论 -
多线程同步
多线程并发执行可以提高效率, 但是当多个线程同时去访问同一个资源时, 也会造成安全风险, 这就是线程的安全问题: 多个线程同时访问一个资源。 要先解决这个问题, 必须得保证公共资源在任何时刻只能有一个线程访问。 为了实现这种限制, Java中提供了同步机制, 当多个线程使用同一个共享资源时, 可以将共享西苑代码块放置到一个代码块中, 使用synchronized 关键字来修饰, 被称作同...原创 2018-06-05 23:58:10 · 106 阅读 · 0 评论 -
String类和StringBuffer类
在Java中定义了String 和 StringBuffer 两个类来封装字符串, 并提供了一系列操作字符串的方法。一、String类1、String类的构造方法方法声明功能描述String()创建一个内容为空的字符串String(char[] value)根据指定的字符数组创建对象String(String value)根据指定的字符串内容创建对象 通过调用不同参数的构造方法便可完成Strin...原创 2018-06-06 09:43:27 · 407 阅读 · 0 评论 -
System类和Runtime类
一、System类 System类定义了一些与系统相关的属性和方法, 他所提供的属性和方法都是静态的,因此想要引用这些属性和方法, 直接使用System 类调用即可。二、Runtime类 Runtime类用于表示虚拟机运行时的状态, 它用于封装Java虚拟机进程。...原创 2018-06-06 10:16:07 · 471 阅读 · 0 评论 -
Java中的String,StringBuilder,StringBuffer三者的区别
最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下,便于大家观看,也便于加深自己学习过程中对这些知识点的记忆,如果哪里有误,恳请指正。 这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。首先说运行速度,或者说是执行速度,在这方...转载 2018-07-28 22:56:42 · 146 阅读 · 0 评论 -
给Java应用打包
在实际开发中, 经常需要开发一些类提供给别人使用, 为了能够更好地管理这些类,在JDK中提供了一个jar 命令, 使用这个命令能够将这些类打成一个文件,这个文件的扩展名为.jar, 被称为 jar 文件。 jar文件的全程是 Java Archive File, 意思是 Java档案文件, 它是一种压缩文件, 独立于任何操作系统平台, 习惯上也将jar文件称为jar包。将jar文件配置好cla...原创 2018-06-04 23:00:21 · 298 阅读 · 0 评论 -
异常
Java中提供了大量的异常类, 这些类都继承自 java.lang.Throwable 类, 下图展示了Throwable 类的继承体系: 可以看到, Throwable 类有两个直接子类 Error 和 Exception 其中 Error代表程序中产生的错误, Exception 代表程序中产生的异常。 Error类: 错误类, 它表示Java运行时产生的系统内部错误或资源耗尽的错误,...原创 2018-06-04 22:46:13 · 349 阅读 · 0 评论 -
instanceof 关键字
Java提供了instanceof 关键字 ,它可以判断一个对象是否为某一个类(或接口)的实例或者子类的实例, 语法格式如下: 对象(或者对象的引用变量) instancesof 类(或接口)...原创 2018-06-04 21:44:41 · 1600 阅读 · 0 评论 -
String,StringBuffer,StringBuilder的区别及其源码分析(二)
4.线程安全与非安全 StringBuffer是线程安全的,而StringBuilder是非线程安全的,至于原因我们依然可以从它们的源码中找到。StringBuffer类的部分源码 1 public synchronized int length() { 2 return count; 3 } 4 5 @Override 6 publi...转载 2018-05-01 18:17:14 · 226 阅读 · 0 评论 -
Java IO 之 BufferedReader 字符输入缓冲类使用示例和详解
BufferedReader从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了通常,Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有 read() 操作可能开销很高的 Reader(如 FileReader 和 Input...转载 2018-05-03 16:19:31 · 297 阅读 · 0 评论 -
RandomAccessFile用法
RandomAccessFileRandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了。这些记录的大小不必相同;但是其大小和位置必须是可知的。但是该类仅限于操作文件。RandomAccessFile不属于InputStream和OutputStream类系的。实际上,除了实现DataInput和DataOutput接口之外(Data...转载 2018-05-04 10:17:16 · 203 阅读 · 0 评论 -
类与类之间的关系
在设计模式中类与类之间的关系主要有6种: 依赖、关联、聚合、组合、继承、实现, 它们之间的耦合度依次增加。 1、依赖关系 依赖关系是一种使用关系, 大多数情况下, 依赖关系体现在某个类的方法使用另一个类的对象作为参数。在系统实施阶段, 依赖关系通常通过三种方式来实现, 第一种也是最常用的一种: 将一个类的对象作为另一个类中的方法的参数, 第二种方式: 在一个类的方法中将另一个类的对象作为其...原创 2018-05-17 20:04:20 · 1024 阅读 · 0 评论 -
java关键字总结
java关键字总结1).访问修饰符的关键字(共3个)关键字意思备注,常用public 公有的可跨包,(默认选择)protected 受保护的当前包内可用 private私有的当前类可用 2).定义类、接口、抽象类和实现接口、继承类的关键字、实例化对象(共6个)关键字意思备注,常用class类public class A(){} 花括号里有已实现方法体,类名需要与文件名相同interfa...转载 2018-05-13 23:50:40 · 86 阅读 · 0 评论 -
Java修饰符总结
Java修饰符下表列出所有Java修饰符,并说明了各自能修饰的Java结构种类和作用修饰符用于意义abstract类接口方法这个类不能被实例化,而且可能包含未实现的方法 所有接口都是抽象的。声明接口时这个修饰符是可选的 这个方法没有主体,主体由子类提供。签名后面是一个分号。所在的类必须也是抽象的。default方法这个接口方法的实现是可选的。接口为不想实现这个方法的类提供了一个默认实现。final...转载 2018-05-13 23:51:32 · 105 阅读 · 0 评论 -
Java中Synchronized的用法
编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程》一文详细讲述了线程、进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础。本文将接着讲一下Java线程同步中的一个重要的概念synchronized.synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,...转载 2018-05-14 11:03:53 · 96 阅读 · 0 评论 -
对象和实例的区别
有一种对象只叫对象,有一种对象叫实例化对象(实例)。我们知道抽象类是不可以被实例化的,那它的对象就不能叫实例化对象,只能叫对象,如下:Type type = typeof(int);//Type是抽象类,不允许实例化,这里的type是Type类的对象,而非实例化对象(实例) 而普通类的对象,既可以叫对象,也可以叫实例化对象(实例),如下:class Person{}class Program...转载 2018-05-15 18:09:45 · 12278 阅读 · 1 评论 -
static关键字
static关键字,它用于修饰类的成员,如成员变量、 成员方法、 以及代码块等。。有时候我们希望某些特定的数据在内存中只有一份,而且能够被一个类的所有实例对象所共享。一、静态变量 用static修饰的成员变量(static不可修饰局部变量)被所有实例共享, 可以直接使用“ 类名.变量名”的形式来访问此变量。二、静态方法 和静态变量相同, 可以直接使用“ 类名.方法名”的形式来访问此方法。三、静态...原创 2018-06-04 20:42:57 · 223 阅读 · 0 评论 -
super关键字
在Java中专门提供了一个super关键字用于访问父类的成员。例如成员变量成员方法和构造方法。 通过super调用父类的构造方法的代码必须位于子类构造方法的第一行, 并且只能出现一次。 在子类的构造方法中一定会自动调用父类的某个构造方法,如果没有在子类构造方法中通过super指定调用父类那个构造方法, 会自动调用父类无参的构造方法, 因此在定义一个类的时候最好是定义一个无参的构造方法, 避...原创 2018-06-04 20:53:27 · 134 阅读 · 0 评论 -
final关键字
被final修饰的类、变量和方法将具有以下特征: final修饰的类, 不能被继承 final修饰的方法不能被子类重写 final修饰的变量是常量(局部和全局变量都是如此), 只能被赋值一次...原创 2018-06-04 20:59:11 · 94 阅读 · 0 评论 -
抽象类和接口
抽象类 抽象方法用abstract关键字进行修饰, 没有方法体; 且含有抽象方法的类也必须使用abstract 进行修饰, 但是被abstract 修饰的抽象类中的方法 可以不包含任何抽象方法, 如果想调用抽象类中定义的方法, 则需要创建一个子类, 在子类中将抽象类中的抽象方法进行实现。 接口 如果一个抽象类中的方法均为抽象方法, 则可以用接口来定义。接口中定义的变量和方法都包含一些默...原创 2018-06-04 21:18:50 · 102 阅读 · 0 评论