关闭
当前搜索:

为什么如此获取 Java 数组的长度

public class Test { public static void main(String[] args) { int[] arr = new int[5]; System.out.println(arr.length); System.out.println("Hello".length()); } }为什么获取数组的长度用...
阅读(81) 评论(0)

Java中几种常量池的区分

全局字符串池(string pool也有叫做string literal pool)全局字符串池里的内容是在类加载完成,经过验证,准备阶段之后在堆中生成字符串对象实例,然后将该字符串对象实例的引用值存到 String Pool 中(记住:String Pool中存的是引用值而不是具体的实例对象,具体的实例对象是在堆中开辟的一块空间存放的)。 在HotSpot VM里实现的 String Pool...
阅读(69) 评论(0)

String.intern 解析

基于 JDK 1.8.0_151intern 是 String.java 中的一个本地方法。 intern 方法会从字符串常量池中查询当前字符串是否存在,若不存在就会将当前字符串的引用放入常量池中。String字符串作为一种对象也是保存在堆中。public native String intern();import java.util.*; public class TestString {...
阅读(84) 评论(0)

Java String 源码分析

基于 JDK 1.8.0_151public final class String implements java.io.Serializable, Comparable, CharSequence {}在Java中,被 final 修饰符的修饰的类不允许被其他类继承。 所以 String 是不能被我们继承的。属性// 该值用于字符存储 private final char val...
阅读(79) 评论(0)

Java容器学习--Vector&Stack源码分析

VectorStackStack 是栈。 它的特性是:先进后出(FILO, First In Last Out)。 Stack 继承于 Vector,所以它的实现也是基于数组。 Java已经不再推荐使用Stack,而优先使用 LinkedList 与 ArrayDeque。以上两个实现也都支持栈的操作。LinkedList基于链表;ArrayDeque基于循环队列。public class S...
阅读(59) 评论(0)

Java容器学习--LinkedList源码分析

public class LinkedList extends AbstractSequentialList implements List, Deque, Cloneable, java.io.Serializable {}LinkedList 是一个继承于 AbstractSequentialList 的双向链表。它也可以被当作堆栈、队列或双端队列进行操作...
阅读(60) 评论(0)

java 标记接口

标记接口标记接口是计算机科学中的一种设计模式。它不含有任何属性和方法。其作用是:当某个类实现了这个接口的时候,我们就认为该类拥有了标记接口所描述的功能。其着眼点在于“标记”(标记拥有某一个功能),而“接口”只是作为一种实现方式。而注解是更加优雅的实现方式。Java中常见的几种标记接口Serializable这个接口是用来标记类是否支持序列化的,所谓的序列化就是将对象的各种信息转换成可以存储或者传输的...
阅读(74) 评论(0)

栈帧、局部变量表、操作数栈

Copy From:http://wangwengcn.iteye.com/blog/16221951.定义栈帧(stack frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。 每一个方法从调用开始到执行完成的过程,就对应着一个栈帧在虚拟机栈里面从入栈到出栈的过程。 对于执...
阅读(80) 评论(0)

What does super.clone() do?

翻译自:https://www.pixelstech.net/article/1420629927-What-does-super-clone%28%29-doObject 类中声明了一个受保护的方法protected native Object clone() throws CloneNotSupportedException;它的作用是:使所有类在需要的时候可以对自己进行克隆。 当需要一个类的...
阅读(85) 评论(0)

Java常量折叠

常量折叠是Java在编译期间做的一个优化,简单的来说就是在编译期就把一些表达式计算好,不需要在运行时进行计算。对于如下代码:String s1 = "a" + "b"; int a = 1 + 3;java编译器在编译阶段会把值计算出来,也就会变成:String s1 = "ab"; int a = 4;对于如下代码(使用javac编译)我们使用Luyten或者JD-GUI打开,可以看到经过优化后的...
阅读(83) 评论(0)

Java容器学习--ArrayList源码分析

ArrayList 内部采用数组实现,是一种顺序存储方式,并且支持随机访问。本文分析基于 JDK 1.8.0_151 版本。public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable {}ArrayList 继承于...
阅读(79) 评论(0)

Java容器学习--List与AbstractList

JDK 1.8.0_151ListList是继承于Collection的接口,它自然就包含了Collection中的全部函数接口;由于List是有序的容器,它也额外的有自己的API接口。主要有“添加、删除、获取、修改指定位置的元素”、获取List中的子容器”等。public interface List extends Collection { // Collection中有的...
阅读(62) 评论(0)

Java容器学习--Collection与AbstractCollection

public interface Collection extends Iterable { int size(); boolean isEmpty(); boolean contains(Object o); Iterator iterator(); Object[] toArray(); T[] toArray(T[] a...
阅读(70) 评论(0)

2013阿里java代码初始化题目笔试题解析

public class T { public static int k = 0; public static T t1 = new T("t1"); public static T t2 = new T("t2"); public static int i = print("i"); public static int n = 99; public i...
阅读(89) 评论(0)

JVM学习笔记(二)------Java代码编译和执行的整个过程

Java代码编译是由Java源码编译器来完成,流程图如下所示:Java字节码的执行是由JVM执行引擎来完成,流程图如下所示:Java代码编译和执行的整个过程包含了以下三个重要的机制: - Java源码编译机制 - 类加载机制 - 类执行机制Java源码编译机制Java 源码编译由以下三个过程组成: 分析和输入到符号表 注解处理 语义分析和生成class文件 流程图如下所示: 最后生成的cla...
阅读(151) 评论(0)

CSDN下载自动评论

在tampermonkey下增加如下脚本:// ==UserScript== // @name CSDN下载自动评论 // @author N3verL4nd // @namespace Sollyu // @description 自动评论,返还下载积分 // @require http://code.jquery.com/jquery-1.9.0.min.js...
阅读(154) 评论(0)

HotSpot虚拟机实现中几个重要的类

HotSpot JVM没有根据Java对象直接通过虚拟机映射到C++对象,而是设计了一个Oop/Klass model,其中oop为Ordinary Object Pointer,用来表示对象的实例信息;klass用来保存描述元数据信息。为什么要设计oop/klass这种二分模型的实现? 一个原因是不想让每个对象都包含vtbl(虚方法表),其中oop中不含有任何虚函数,虚表只保存于klass中,可...
阅读(146) 评论(0)

JVM中Java对象的创建

Java是一门面向对象的编程语言,在Java程序运行过程中无时无刻都有对象被创建出来,在语言层面上,创建对象(例如克隆、反序列化)通常仅仅是一个new关键字而已,而在虚拟机中,对象(仅限于普通Java对象,不包括数组和Class对象等)的创建又是怎样一个过程呢? 1. 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被...
阅读(117) 评论(0)

Java 集合系列01之 总体框架

Java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java集合工具包位置是java.util.* Java集合主要可以划分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)、。 Java集合工具包框架图(如下): 大致说明:看上面的框架图,先抓住它...
阅读(92) 评论(0)

Java Classloader机制解析

JDK中提供的ClassLoader1.Bootstrap ClassLoaderBootstrp加载器是用C++语言写的,它是在Java虚拟机启动后初始化的,它主要负责加载%JAVA_HOME%/jre/lib,-Xbootclasspath参数指定的路径以及%JAVA_HOME%/jre/classes中的类(自定义的文件夹名称必须为classes)。 -Xbootclasspath:boo...
阅读(132) 评论(0)
1123条 共57页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:1067280次
    • 积分:18859
    • 等级:
    • 排名:第575名
    • 原创:692篇
    • 转载:428篇
    • 译文:3篇
    • 评论:144条
    总有一天你将破蛹而出,成长得比人们期待的还要美丽。
    但这个过程会很痛,会很辛苦,有时候还会觉得灰心。
    面对着汹涌而来的现实,觉得自己渺小无力。
    但这,也是生命的一部分。做好现在你能做的,然后,一切都会好的。
    我们都将孤独地长大,不要害怕。

    —— 寂地《踮脚张望的时光》
    博客专栏
    最新评论