https://zhuanlan.zhihu.com/p/257863129?utm_source=ZHShareTargetIDMore 番茄番茄我是西瓜 那是我日夜思念深深爱着的人啊~ 已关注   8 人赞同了该文章 前言 本篇是jvm内存区域管理系列教程之一 java创建对象的过程 全系列内容可在专栏中查阅 jvm全局观​www.zhihu.com 今天我们谈谈 在java中new一个对象,背后发生了什么 概括说来,就是 先后执行 0.类加载检查,1.类加载(如果检查发现未加载),2.分配…
首先说下问题: 这次在做项目的是出现了一个new对象在循环里面与外面造成的不同影响. 大家可以看到这个new的对象放在不同的位置产生的效果是不一样的. 经过多方查询与验证可以得出结论: * EasyUITree tree=new EasyUITree(); *放外边是同一块内存空间,你的list中看似有了很多tree,其实都是同一个tree对象,tree的内容是你最后一次修改的内容,所以最终树的的节点都是一样的 而你放在里面的时候,每次都开辟了一个新的内存空间,也就是新的对象tree,所以lis…
1,new一个对象时代码的执行顺序 (1)加载父类(以下序号相同,表明初始化是按代码从上到下的顺序来的) 1.为父类的静态属性分配空间并赋于初值 1.执行父类静态初始化块; (2)加载子类 2.为子类的静态属性分配空间并赋于初值 2.执行子类的静态的内容; (3)加载父类构造器 3.初始化父类的非静态属性并赋于初值 3.执行父类的非静态代码块; 4.执行父类的构造方法; (4)加载子类构造器 5.初始化子类的非静态属性并赋于初值 5.执行子类的非静态代码块; 6.执行子类的构造方法. 总之一句话…
Spring生态在Java项目中被广泛应用,从架构到技术应用再到常用的基本功能,Spring给我们的开发带来了很大的便利.今天翻到项目中导出报表功能的时候,发现经常复制对象的方法: BeanUtils.copyProperties; 把源对象的属性值赋值给目标对象,Spring和Apache和其他的一些框架都给我们提供了对象属性的拷贝方法: org.springframework.beans.BeanUtils.copyProperties(Object source, Object targe…
原创:转载请注明出处 今天在写代码时,遇到一个问题,特此进行记录. for (ProfileDto profileDto : profile)            { // Profile resProfile=null;                Profile resProfile=new Profile(); // 将profileDto对象的属性值复制给resProfile对象                Tools.copyPropertiesIgnoreNull(profil…
File file = new File("地址"); file.mkdirs(); //新建文件夹,当没有父文件夹时,但是不会自动创建父文件夹 file.mkdirs(); //新建文件夹,当没有父文件夹时,但是会创建父文件夹, //如果文件不存在,则创建一个新文件if(!file.isFile()){    file.createNewFile();}…
/* 异常的注意事项: 1,子类在覆盖父类方法时,父类的方法如果抛出了异常,那么子类的方法只能抛出父类的异常或者该异常的子类. 2,如果父类抛出多个异常,那么子类只能抛出父类异常的子集. 简单说:子类覆盖父类,只能抛出父类的异常或者子类或者子集. 注意:如果父类的方法没有抛出异常,那么子类覆盖时绝对不能抛.子类不能抛出比父类多的异常.就只能try...catch */ class A extends Exception{ A(String msg){ super(msg); } } class…
背景 说到java的特性,其中一个最重要的特性便是java通过new在堆中分配给对象的内存,不需要程序员主动去释放,而是由java虚拟机自动的回收.这也是java和C++的主要区别之一:那么虚拟机是如何实现自动回收的呢?它的基本回收算法又是什么呢?  这篇随笔先不介绍这些~ ~,熟话说 饭要一口一口地吃,路要一步一步地走嘛,这篇随笔主要讲解的是回收的前提:如何判断一个对象可以回收. 对java中如何判断一个对象可以回收的一般性认识 在没有学习<深入理解java虚拟机>之前,对于java中判断一…
首先贴出测试用例: package test; import org.junit.Test; /** * Created by Administrator on 2015/9/16. * */ public class TestString { String str1 = "hello quanjizhu"; //若String pool中没有,则创建新对象,并放入String pool String str2 =str1+"haha"; //由于string不可变…
首先,必须强调一点:String Pool不是在堆区,也不是在栈区,而是存在于方法区(Method Area) 解析: String Pool是常量池(Constant  Pool)中的一块. 我们知道,常量就是不可以再改变的值,给它建一个池子很明显是为了加快程序运行的速度:在一个程序中,常量和变量是相对存在的:变量因为可变性所以一般存在于栈中,而常量去作为一个特殊群体被存在在常量池中. 常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据.-…
java中判断两个字符串是否相等的问题   判断两个字符串是否相等的问题.在编程中,通常比较两个字符串是否相同的表达式是"==",但在java中不能这么写.在java中,用的是equals(); 例:A字符串和B和字符串比较: if(A.equals(B)){ } 返回true 或false. String 的equals 方法用于比较两个字符串是否相等.由于字符串是对象类型,所以不能用简单的"=="判断.而使用equals比较两个对象的内容是否相等. 注意: eq…
首先看一个例子,通过这个例子更能快速理解String常量池 public static void main(String[] args) { String a = "ab"; String bb = "b"; String b = "a" + bb; String c = "a" + "b"; String d = b.intern(); System.out.println(a == b); System…
Java中new一个对象的步骤: 1. 当虚拟机遇到一条new指令时候,首先去检查这个指令的参数是否能 在常量池中能否定位到一个类的符号引用 (即类的带路径全名),并且检查这个符号引用代表的类是否已被加载.解析和初始化过,即验证是否是第一次使用该类.如果没有(不是第一次使用),那必须先执行相应的类加载过程(class.forname()). 2. 在类加载检查通过后,接下来虚拟机将 为新生的对象分配内存 .对象所需的内存的大小在类加载完成后便可以完全确定,为对象分配空间的任务等同于把一块确定大小…
很多书中都提到了在Java中只存在值传递,但是今天在一个NanoHTTPD的源码中看到这样一段: if (qmi >= 0) { decodeParms(uri.substring(qmi + 1), parms); 3 uri = decodePercent(uri.substring(0, qmi)); } /** * Decodes parameters in percent-encoded URI-format ( e.g. * "name=Jack%20Daniels&p…
Java中的共享设计的思路是在Java中形成一个对象池,在这个对象池中保存多个对象, 新实例化的对象如果已经在池中定义了,则不再重复新定义,而从池中直接取出继续使用. 例如,对于字符串来说,Java 会提供一个字符串池来保存全部的内容,当内容重复是,会将对象指向已存在的实例空间.因此如下代码段中str1.str2和str3的地址都指向相同的内存空间. str1 = ”hello"; str2 = "hello"; str3 = "hello";…
HashSet和HashMap一直都是JDK中最常用的两个类,HashSet要求不能存储相同的对象,HashMap要求不能存储相同的键. 那么Java运行时环境是如何判断HashSet中相同对象.HashMap中相同键的呢?当存储了“相同的东西”之后Java运行时环境又将如何来维护呢? 在研究这个问题之前,首先说明一下JDK对equals(Object obj)和hashcode()这两个方法的定义和规范: 在Java中任何一个对象都具备equals(Object obj)和hashcode()…
java的po vo dao dto pojo 1各个术语的简介 PO(persistant object)持久对象 最形象的理解就是一个PO就是数据库中的一条记录.PO是在ORM中出现的概念,就是ORM中的O,将数据库中的数据模型映射成为一个java对象.简单的PO就是对应数据库中某一张表的一个记录,多个记录就用PO的集合来表示.PO中不能包含任何对数据库的操作 DAO(Data Access Objects)数据访问接口 顾名思义就是与数据库打交道,加载业务逻辑和数据库资源之间.DAO模式是…
原文地址:http://blog.laofu.online/2018/04/20/java-lambda/ 为什么使用lambda 在java中我们很容易将一个变量赋值,比如int a =0;int b=a; 但是我们如何将一段代码和一个函数赋值给一个变量?这个变量应该是什么的类型? 在javascript中,可以用一个对象来存储. var t=function() { int a=1; a=a+1; alert(a); } 在java中,直到java8的lambda的特性问世,才有办法解决这个…
Java中的锁机制及Lock类 锁的释放-获取建立的happens before 关系 锁是java并发编程中最重要的同步机制.锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息. 下面是锁释放-获取的示例代码: class MonitorExample {int a = 0;public synchronized void writer() {  //1a++;                             //2}                      …
好记性不如烂笔头~~ 并发编程中synchronized关键字的地位很重要,很多人都称它为重量级锁.利用synchronized实现同步的基础:Java中每一个对象都可以作为锁.具体表现为以下三种形式. (1)对于普通同步方法,锁是当前实例对象. (2)对于静态同步方法,锁是当前类的Class对象. (3)对于同步方法块,锁是synchronized括号里配置的对象. 一.普通同步方法 使用synchronized关键字修饰一个普通方法,锁住的是当前实例的对象.当synchronized锁住该对…
问题:请讲下在java中有哪些垃圾回收算法 分析:该问题主要考察对java中垃圾回收的算法以及使用场景 回答要点: 主要从以下几点去考虑, 1.GC回收算法有哪些 2.每种算法的使用场景 3.基于垃圾回收算法有哪些垃圾回收器 在<java面试一日一题:如何判断一个对象是否为垃圾对象>中知道了java中判断一个对象是否存活,是否可被回收使用的是可达性分析算法,找出了可回收的对象,那么有哪些回收算法可以回收这些对象那 复制算法 复制算法就是从一个地方复制到另外一个地方,针对垃圾回收来说,就是把活着…
java中新建数组: String[] s;//定义的时候不需要设置大小 s = new String[5];//为数组分配空间时就要设置大小   对于ArrayList, ArrayList<String> result = new ArrayList<String>(); //这时候就不需要设置大小了,result.add(string)添加一个元素,result.remove(string)删除一个元素,大小可以由result.size()得到   再来看看 java里允许M…
在eclipse中新建文件报错错误提示如下: The superclass "javax.servlet.http.HttpServlet" was not found on the Java Buil 解决方案          右击项目文件名 然后点击确定,以及应用…
转自:http://blog.csdn.net/chx10051413/article/details/40784667 http://www.cnblogs.com/baoendemao/p/3804797.html Java 中如何序列化一个对象 我们都知道java 中无法保存一个对象到文本文件中,但是当我们有这种需求的时候,我们可以通过java 的序列化功能把当前对象的一些属性以二进制的形式保存到文件中.当我们需要这个对象的时,只需要从二进制文件中还原为保存前的对象即可.从这里我们可以得到…
问题:请讲下在java程序运行时一个对象实例的数据结构是什么样子的 分析:该问题主要考察对java中对象的理解,在程序运行过程中一个对象实例是以什么样的形式存在的 回答要点: 主要从以下几点去考虑, 1.对象实例存储在什么位置 2.程序运行时一个对象实例的数据结构是什么样子的 都知道在java中万事万物都是对象,例如, public class User{ private String name; private int age; private String address; //年龄加1 p…
前提条件: 已经安装好JDK 已经安装好Maven 已经安装好Eclipse 已经安装好Maven插件 在Eclipse中新建Maven项目 [File]→[New]→[Other...] [Maven]→[Maven Project]→[Next >] 勾选[Create a simple project(skip archetype selection)]→[Next >] [在Group Id处填写一个名称,Artifact Id处填写一个名称,因为我们要建一个web项目,所以Packa…
一.String类 想要了解一个类,最好的办法就是看这个类的实现源代码,来看一下String类的源码: public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final char value[]; /** The offset is the first…
一.包的概念:创建,使用. 1.新建包: 最上面一行,之前不能再有其它代码了. package 包名; 注意:包名一般都有命名的规范.例如:com.itnba.maya.zy(从大到小). 2.使用包: import 包名.*; import 包名.类名; 例如:import com.itnba.maya.zy.*; 注意:import不要放在package的上面上 package com.itnba.maya.zy; import com.itnba.maya.zyy.*; //从别的包里引用…
package sfk.bbs.test.springjsbctempletTest; import static org.junit.Assert.*; import org.junit.Test; public class testBase { @Test public void test() { Integer tt2 = -129; Integer tt = new Integer(-129);//等价于Integer tt2 = -129;,因为不在常量池[-128,127]范围内所以…