java类中属性的加载顺序,以及内存分配情况介绍
看下面例子及说明:
/**
假如有外部类调用了该类,代码为:new StaticTest();
那么下面是类属性的加载顺序
*/
public class StaticTest{ public int dsd=2;//第3 //多个对象会有多次分配内存
public awds() {
int sdsfsd=2;//第4 //多个对象会有多次分配内存
} //静态代码块
static{
System.out.println("静态代码块正在加载...");//第1
}
public static int d=2;//第2 内存只被分配一次
public final static int u = 3; //内存只被分配一次 且不可修改值
public void test() {//不会被加载
int sdsfsd=2;//不会被加载
new String ("kjj");//不会被加载 多次调用会有多次分配内存
} String s1 = "a";//内存只被分配一次
String s2 = "b"; //内存只被分配一次
String s3 = "ab"; //内存只被分配一次
String s4 = s1 + s2; // 多次调用会有多次分配内存
String s5 = "a" + "b"; //内存只被分配一次
String s6 = s1 + "b"; // 多次调用会有多次分配内存
StringBuffer s7 = new StringBuffer("abc"); // 多次调用会有多次分配内存 String s8 = s7.substring(3);
StringBuffer s9 = new StringBuffer("abc"); System.out.println((s3 == s4));//false
System.out.println(s3 == s5);//true
System.out.println(s3 == s6);//false
System.out.println(s4 == s6);//false
System.out.println((s4 == s8));//false
System.out.println((s7.toString() == s9.toString()));//false System.out.println((s1 + s2)==(s1 + s2));//false
System.out.println((s1 + "b")==(s1 + "b"));//false }
java类中属性的加载顺序,以及内存分配情况介绍的更多相关文章
- Java 类中各成分加载顺序 和 内存中的存放位置
参加一个笔试,有一个关于类的静态代码块.构造代码块.构造函数的执行顺序的问题.不太清楚,网上百度了一下.在这里记录一下. 一.什么时候会加载类?使用到类中的内容时加载:有三种情况1.创建对象:new ...
- Java笔记(十二)……类中各部分加载顺序及存放位置问题
什么时候会加载类 使用到类中的内容时加载,三种情况: 创建对象:new StaticDemo(); 使用类中的静态成员:StaticCode.num = 9; StaticCode.getNum() ...
- Java类实例化时候的加载顺序
面试试题中经常考到此问题,现在做进一步的总结: public class Student { public Student(String name){ System.out.println(name) ...
- java类到底是如何加载并初始化的?
Java虚拟机如何把编译好的.class文件加载到虚拟机里面?加载之后如何初始化类?静态类变量和实例类变量的初始化过程是否相同,分别是如何初始化的呢?这篇文章就 是解决上面3个问题的. 若有不正之处, ...
- (转)java类到底是如何加载并初始化的?
Java虚拟机如何把编译好的.class文件加载到虚拟机里面?加载之后如何初始化类?静态类变量和实例类变量的初始化过程是否相同,分别是如何初始化的呢?这篇文章就 是解决上面3个问题的. 若有不正之处, ...
- 详解web.xml中元素的加载顺序
一.背景 最近在项目中遇到了启动时出现加载service注解注入失败的问题,后来经过不懈努力发现了是因为web.xml配置文件中的元素加载顺序导致的,那么就抽空研究了以下tomcat在启动时web.x ...
- 你知道 Java 类是如何被加载的吗?
前言 最近给一个非 Java 方向的朋友讲了下双亲委派模型,朋友让我写篇文章深度研究下JVM 的 ClassLoader,我确实也好久没写 JVM 相关的文章了,有点手痒痒,涂了皮炎平也抑制不住的那种 ...
- 如果你还不知道如何控制springboot中bean的加载顺序,那你一定要看此篇
1.为什么需要控制加载顺序 springboot遵从约定大于配置的原则,极大程度的解决了配置繁琐的问题.在此基础上,又提供了spi机制,用spring.factories可以完成一个小组件的自动装配功 ...
- 【java虚拟机系列】java中类与对象的加载顺序
首先了解一下Java虚拟机初始化的原理. JVM通过加装.连接和初始化一个Java类型,使该类型可以被正在运行的Java程序所使用.类型的生命周期如下图所示: 装载和连接必须在初始化之前就要完成. 类 ...
随机推荐
- shell读取文件的每一行内容并输出【转】
写法一: #!/bin/bash while read line do echo $line done < file(待读取的文件) 写法二: #!/bin/bash cat file(待读取的 ...
- sqlalchemy更新和插入操作
def save_app_info(self): try: # update app_info print(self.dicts) data = db_session.query(App_Info). ...
- Lempel-Ziv algorithm realization
Lempel-Ziv 复杂度程序 随着人们对非线性方法的分析越加深入,他们发现,虽然关联维度和最大李雅谱诺夫指数在分析脑电时具有一定的帮助,但是它们对数据的依赖性太强,对干扰和噪 声太敏感,而且要得到 ...
- SQL:select case when 的用法
CASE 可能是 SQL 中被误用最多的关键字之一.虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法.例如,你可以在 WHERE 子句中使用 CASE. 首先让我们看一下 CASE 的语法 ...
- jekyll简单使用
jekyll build # => 当前文件夹中的内容将会生成到 ./site 文件夹中. jekyll build –destination <destination> # =&g ...
- opencv3.10加入OPENCV_contrib模块
在VS2015+opencv3.1进行算法研究时,遇到了一些模块在官网下载的里面是没有的,需要自己进行编译,参考以下链接 http://blog.csdn.net/liu798675179/artic ...
- python正则表达式教程
原文这里,非常实用,转载一下 再来一篇,两篇一起看,美滋滋 本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写 ...
- Java StringJoiner
Java StringJoiner Java added a new final class StringJoiner in java.util package. It is used to cons ...
- 使用抽象bean
定义抽象类Abstract=“true”抽象bean不能实例化,一个类可以创建多个bean. 抽象bean的配置和一般bean的配置基本一样只是在增加了Abstract=“true”抽象bean是一个 ...
- Kail Linux渗透测试教程之免杀Payload生成工具Veil
Kail Linux渗透测试教程之免杀Payload生成工具Veil 免杀Payload生成工具——Veil Kail Linux渗透测试教程之免杀Payload生成工具Veil,Veil是一款利用M ...