Java 新手进阶:细说引用类型】的更多相关文章

在前几天的帖子<Java性能优化[1]:基本类型 vs 引用类型>里,俺大概介绍了“引用类型”与“基本类型”在存储上的区别.昨天有网友在评论中批评说“引用类型变量和它所引用的对象”没区分清楚,容易混淆.所以今天专门来说一下引用类型的相关细节. 另外,顺便也把原先的帖子中,关于“两种类型的存储方式”这节补充了一下,加点插图,有助于大伙儿的理解. 其实,引用类型的变量非常类似于 C/C++ 的指针.为了形象起见,也为了打字方便,本文后面的内容,都把“引用类型的变量”称为[指针].所以,如果你原先有…
本文为 SnailClimb 的原创,目前已经收录自我开源的 JavaGuide 中(61.5 k Star![Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识.觉得内容不错再 Star!). 另外推荐一篇原创:终极推荐!可能是最适合你的Java学习路线+方法+网站+书籍推荐! Java 并发进阶常见面试题总结 1. synchronized 关键字 1.1. 说一说自己对于 synchronized 关键字的了解 synchronized关键字解决的是多个线程之间访问…
一:对算法和数据结构不熟悉 为什么我先拿“数据结构和算法”说事捏?这玩意是写程序最最基本的东东.不管你使用 Java 还是其它的什么语言,都离不开它.而且这玩意是跨语言的,学好之后不管在哪门语言中都能用得上. 既然“数据结构和算法”这么重要,为什么很多 Java 新手却很不熟悉捏?我琢磨了一下,估计有两种可能.有些人虽然是计算机系毕业的,但是当初压根没好好学过这门课程,到工作时早都还给老师了:还有一些人是中途转行干编程,转行后又没有好好地打基础(都指望速成). 下面我列出几个很基本的问题,如果你…
3.JAVA异常进阶 1.Run函数中抛出的异常 1.run函数不会抛出异常 2.run函数的异常会交给UncaughtExceptionhandler处理 3.默认的UncaughtExceptionHandler为空   Thread.setUncaughtExceptionHandler(new UncaughtExceptionHandler(){-...}) 4.启动线程 Thread.start() 例子 UncaughtExceptionTask task=new Uncaught…
史上最全的 Java 新手问题汇总   Java是目前最流行的编程语言之一——它可以用来编写Windows程序或者是Web应用,移动应用,网络程序,消费电子产品,机顶盒设备,它无处不在. 有超过30亿的设备是运行在Java之上的.根据Oracle的统计数据,光是使用中的Java Card就有有50亿. 超过900万程序员选择使用Java进行开发,它是最受开发人员欢迎的语言,同时也是最流行的开发平台. 本文为那些准Java程序员们准备了一系列广为流传的Java最佳编程实践 优先返回空集合而非nul…
java中四种引用类型  今天看代码,里面有一个类java.lang.ref.SoftReference把小弟弄神了,试想一下,接触java已经有3年了哇,连lang包下面的类都不了解,怎么混.后来在网上查资料,感觉收获颇多,现记录如下. 对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态,程序才能使用它.从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地…
Java字符串进阶 前言 最常用的对字符串操作的类有三个,分别是String,StringBuilder,StringBuffer,下面将会详细的说说这三个类...... String String类代表字符串,这个是最基本的对字符串的类,这个也是使用比较多的类,这里就不再详细介绍了 构造 new String(String str) new String(StringBuilder str) new String(StringBuffer str) new String(byte[] bys,…
背景:c#开发人员 学习java 新手一枚.只适合新手 1:配置java环境 (win10环境参考本目录java环境配置) 2:IDEA 熟悉开发工具 (当初没学java 很大的一个原因就是工具e文 看不懂 又没有人教) 现在好了 https://github.com/guobinhit/intellij-idea-tutorial/blob/master/README.md 3:教程 http://how2j.cn/stage/14.html(全力推荐)最好有个系统的了解 已上来就SSM sp…
知识点:Java 集合框架图 总结:Java 集合进阶精讲1 总结:Java 集合进阶精讲2-ArrayList 初探: ArrayList底层结构是数组,是List接口的 可变数组的实现,所以会占用一块连续的内存空间. 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小,可以动态增长. 自动增长会带来数据向新数组的重新拷贝,因此,如果可预知数据量的大小,就可在构造ArrayList实例时指定其容量. 线程不安全,允许元素为null.ArrayList继承自 Abst…
Java提供了 java.lang.ref包,该包下的类均与垃圾回收机制相关 先介绍Java对象的集中引用类型 1.强引用 强引用是最常见的,创建对象就是强引用,如 String a = new String("1"); 无论系统内存是否紧张,只要该对象还存在强引用就不会被垃圾回收机制回收 2.软引用 当系统内存足够时,不会被回收,当系统内存不足时,会将其回收 3.弱引用 当垃圾回收机制运行时,总会将其回收 4.虚引用 跟踪对象被垃圾回收的状态 通过检查与虚引用关联的引用队列中是否已经…
知识点:Java 集合框架图 总结:Java 集合进阶精讲1 总结:Java 集合进阶精讲2-ArrayList 集合进阶1---为集合指定初始容量 集合在Java编程中使用非常广泛,当容器的量变得非常大的时候,它的初始容量就会显得很重要了. 因为扩容是需要消耗大量的人力物力财力的. 同样的道理,Collection的初始容量也显得异常重要.所以:对于已知的情景,请为集合指定初始容量. import java.util.ArrayList; import java.util.List; publ…
java新手抖机灵(java新手技巧) 1.交换两个整数的值 好处是不用定义临时变量,显得代码简洁,提高运行效率 其实也可以用+-*/进行这种运算 比如可以这样: a = a + b; b = a - b; a = a - b; int a = 1, b = 2; a = a ^ b; b = a ^ b; a = a ^ b; System.out.println(a); System.out.println(b); 2.快速查找整形数组中的偶数 其实这个和第四项有些重复部分,但是总觉得合在一…
前言 Java基础-进阶继承,抽象类,接口 进阶继承 class Stu { int age = 1; } class Stuo extends Stu { int agee = 2; } class Demo{ Stuo stuo = new Stuo(); } 成员变量的特殊情况 成员函数 class Stu{ void show(){ System.out.println("Stu show"); } } class Stue extends Stu{ void show(){…
Java 入门进阶 發表於 2015-04-16 http://xielong.me/2015/04/16/%E6%9C%8D%E5%8A%A1%E7%AB%AF%E5%B7%A5%E7%A8%8B%E5%B8%88%E5%85%A5%E9%97%A8%E4%B8%8E%E8%BF%9B%E9%98%B6Java%E7%89%88/ 前言 欢迎加入我们.这是一份针对实习生/毕业生的服务端开发入门与进阶指南.遇到问题及时问你的 mentor 或者直接问我. 建议: 尽量用google查找技术资料.…
Java的进阶之道 一.温馨提示 尽量用google查找技术资料.(条件允许的话) 有问题在stackoverflow找找,大部分都已经有人回答. 多看官方的技术文档. ibm developerworkers的文章质量整体上有保障. 平时花一些时间在github上阅读优秀项目源码. 二.入门(1-2 个月) 目标:参与简单的项目开发. 技能: 掌握 Java.经典的<Java 核心技术:卷1 基础知识>(或者<Java 编程思想>)必看,跳过其中的图形和 applet 章节.习惯…
先说结论: 首先,Java中有四种引用类型:强引用.软引用.弱引用.虚引用.-- 在 Java 1.2 中添加的,见 package java.lang.ref; . 其次,这几个概念是与垃圾回收有关的. 然后,如果你不知道这几个概念,那你用的肯定都是强引用.例如 String str = new String(); 这个 str 到 new String() 的引用类型就是强引用. 那么弱引用是什么? 弱引用,就是引用与对象之间的联系很弱,弱到垃圾回收器会无视这个引用,直接回收对象. 软引用与…
对象的强.软.弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态,程序才能使用它.从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期.这4种级别由高到低依次为:强引用.软引用.弱引用和虚引用. ⑴强引用(StrongReference)强引用是使用最普遍的引用.如果一个对象具有强引用,那垃圾回收器绝不会回收它.当内存空间不足,Java虚拟机宁愿抛出Out…
★随意地命名 有些新手写程序,当需要定义某个变量名(也可能是函数名.类名.包名等)时,随意地一敲键盘,名字就起好了......若干星期后,碰到某 bug,再来看自己写的代码时,心中暗自嘀咕:“这代码是我写的吗?咋都看不懂捏?” 所以我常跟新来的菜鸟说,命名不规范害死人啊!鉴于该问题相当普遍,我整理了几种典型的作为反面教材,具体如下:使用单字母命名变量:使用一些没太大意义的变量名(例如 s1.s2.s3):对同一个业务概念使用不同的术语/缩写(容易让读代码的人神经分裂):使用拼音命名(如果你团队中…
1首先对于一个java还白的小白,先理解CDH与Hadoop的关系 一.Hadoop版本选择. Hadoop大致可分为Apache Hadoop和第三方发行第三方发行版Hadoop,考虑到Hadoop集群部署的高效,集群的稳定性, 以及后期集中的配置管理,业界多使用Cloudera公司的发行版,简称为CDH. 下面是转载的Hadoop社区版本与第三方发行版本的比较: Apache社区版本 优点: 完全开源免费.社区活跃文档.资料详实 缺点: 因为很活跃所以版本对应关系,各个版本层出不穷,让使用者…
很多人学了javase以为自己学的已经很OK了,但是其实javase里边有很多的知识点是你不知道的,不管你找的是哪里的javase的视频,大多数是不会讲这些东西,而这些东西你平时业务又不会主动去接触,这块属于java的进阶部分,下面我给大家分享下java初级程序员进阶到中高级需要具备的知识技能. Java的并发编程 当你用计算机工作的时候,你在同时做多样事情.你可以边听音乐边写文档边读取邮件.可以这样做的原因是你的操作系统运行并发任务.并发编程是关于基础与进程的一个提供了多任务或者多程序同时运行…
[关键词] [问题] · 加深对基本类型和引用类型的理解: [效果图] [分析] 參见最后的[參考资料] [解决方式] [代码] public void test() throws Exception { System.out.println("\nint:================="); int i = 2; System.out.println("before:" + i); change1(i); System.out.println("af…
java四种对象引用类型 对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态,程序才能使用它.从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期.这4种级别由高到低依次为:强引用.软引用.弱引用和虚引用. (1)强引用(StrongReference) 强引用是使用最普遍的引用.如果一个对象具有强引用,那垃圾回收器绝不会回收它.当内存空间…
今天,我们来写一段Java程序.然后看看Java程序是如何执行的,以及Java新手小白遇到的问题和解决办法.   一.HelloWorld的编写 ① 新建一个XXX.java (文件的扩展名显示出来) ②编写代码 ,以类为单位编写,编写入口函数/方法 public class HelloWorld{ // 类名最好与文件名一致 public static void main(String[] args){ // 程序的入口 System.out.println("HelloWorld"…
J2EE(Java2 Enterprise Edition) 刚出现时一般会用于开发企业内部的应用系统,特别是web应用,所以渐渐,有些人就会把J2EE和web模式画上了等号.但是其实 J2EE 里面并不仅仅是web,可以看到很多其中的规范都是通用的,目的是为了高效开发出健壮的服务企业业务模式的应用系统.J2EE中也是可以没有web界面的应用,而现在面向大众用户开发的网站往往也会使用到很多的J2EE的技术,所以J2EE和web开发的概念都是融合在了一起了. 我本人在JAVA开发刚入行的时候,也是…
ref: https://www.cnblogs.com/ysocean/p/8482979.html#_label2 ------------------ 这里再给大家普及一个概念,在 Java 中基本类型和引用类型的区别. 在 Java 中数据类型可以分为两大类:基本类型和引用类型. 基本类型也称为值类型,分别是字符类型 char,布尔类型 boolean以及数值类型 byte.short.int.long.float.double. 引用类型则包括类.接口.数组.枚举等. Java 将内存…
互联网 Java 工程师进阶知识完全扫盲:https://github.com/doocs/advanced-java…
史上最全的Java高级技术点,全是Java高级进阶技术,几乎包含了Java后端的所有知识点 1…
前言 技术学习是一个总结.纠错.触类旁通的过程,而不是单纯重复练习的过程,如果你问一个做过5年以上Java的老码农,他们很多人都会有很强的"搬砖感",这种"搬砖感"其实就是对Java项目的触类旁通.看出套路来了,比如: (1)绝大部分Java应用系统,绝大部分功能归根到底都是数据库的"CRUD增删改查",中间加了一些数据的校验.转换和逻辑运算,不同之处就是有的功能流程拐弯多一些.性能要求高一些.界面交互炫酷一些等. (2)绝大部分应用系统,核心架…
Java基础进阶J Object类 hashcode() toString() clone() getClass() notify() wait() equals() Random类 生成 随机数 UUID Math类 常见的数据运算 File类 创建文件 查看文件 修改文件 删除文件 包装类 自动装箱和拆箱(面试) Data类 Data SimpleDateFormat yyy-MM-dd HH:mm:ss Calendar (建议使用) String类 不可变性 final 操作量较少 St…
写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给大家一些经验,能让大家更好学习和使用Java. 这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE相关的.和Java中各个框架相关的内容. 经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容. 1. JVM相…