java

标签: java

Java中注释@link、@see用法

在源码中经常可以看到注解中有类似的写法,点击可以直接跳转到指定方法,对阅读注解有很大的帮助。 /** * When {@link android.app.ActivityOptions#makeSceneTransitionAnimation(Activity, * android.view.View, String)} was used to start an Activity, <var>listener</var> * will be called to handle shared elements on the <i>launching</i> Activity. Most * calls will only come when

阅读全文...

Android内存机制

Android 虚拟机在内存分配时会涉及到以下区域: 寄存器:我们在程序中无法控制 栈:存放基本类型的数据和对象的引用。栈的优势是存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。 堆:存放用new产生的数据, 堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢 静态域:存放在对象中用static定义的静态成员 常量池:存放常量 非RAM存储:硬盘等永久存储空间 方法区:方法区存放的是类信息、常量、静态变量,所有线程共享区域。 虚拟机栈:每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息,线程私有区域。 本地方法栈:与虚拟机栈类似,区别是虚拟机栈为虚拟机执行Java方法服务,本地方法栈为虚拟机使用到的Native方法服务。 堆:JVM管理的内存中最大的一块,所有线程共享;用来存放对象实例,几乎所有的对象实例都在堆上分配内存;

阅读全文...

Android 和 Java 知识体系总结

8大排序算法 https://segmentfault.com/a/1190000011395732 https://juejin.im/post/5a08cc646fb9a045030f9174?utmsource=goldbrowser_extension JDK 和 JRE区别 JRE: Java Runtime Environment JDK:Java Development Kit JRE 顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。JRE根据不同操作系统(如:windows,linux等)和不同JRE提供商(IBM,

阅读全文...

Java创建对象的四种方式

1.通过new新建对象 通常都是使用java的关键字new来创建对象实例。 若有一个A类,则可以通过下面的语句创建A类的对象实例并指定到变量obj。 //定义A类 class A{ } //通过new创建A的对象 A a = new A(); 2.通过clone复制对象 若程序写成如下,则可以根据当前对象(this)建立一个新实例对象(没有调用构造函数). public class A implements Cloneable{ private A obj; public A cloneA() { try { obj = (A)this.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return obj; } } 如果需要复制上面的那个obj指向的对象实例时,调用somethingNew.cloneSomething()方法就ok了。 但是为什么不直接使用somethingNew.clone()呢?

阅读全文...

Java静态变量的初始化(static块的本质)

转自:http://blog.csdn.net/darxin/article/details/5293427 在网上看到了下面的一段代码: public class Test { static { i = 20; } public static int _i = 10; public static void main(String[] args) { System.out.println(i); } } 上述代码会打印出什么结果来呢?10还是20?本文将以此代码为引子,着重讨论一下静态变量的初始化问题。 问题1:静态变量如何初始化 Java类中可以定义一个static块,用于静态变量的初始化。如: public class Test { public static int _i; static { _i = 10;

阅读全文...

java为什么不支持多继承?

多继承指一个子类能同时继承于多个父类,从而同时拥有多个父类的特征,但缺点是显著的。 1.若子类继承的父类中拥有相同的成员变量,子类在引用该变量时将无法判别使用哪个父类的成员变量。 * * 如: public class classA // 父类 classA{ privateint num = 0;} public class classB // 父类 classB{ private int num= 1;} public class classC extends classA,classB // 子类 classC 继承于 classA 和 classB{ public static void main(String [] args){ classC obj = new classC(); obj.print(); // 调用父类成员变量 num

阅读全文...