主要是一些原来不懂但是本次上机涉及到的内容...

一、空数组与数组为null的区别

1、空数组:

int[] array = new int[0];

array.length == 0;

空数组是一个真正的数组,只不过长度为0,它是一个真正的对象。

2、数组是null

null数组是一个空引用,只定义了一个数组,但是没有实例化,并不是一个对象

int[] array = null;

二、可变参数

适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。

注意:可变参数必须位于最后一项。

调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。

下面是一个例子,该方法的参数可以是一个或者多个String

    public static String strscat(String... args) {
String x = new String();
for(String s: args) {
x = x + s;
}
return x;
}

三、Java对象实例是作为引用存在的

四、浅拷贝vs深拷贝

浅拷贝是指在拷贝对象时,对于基本数据类型的变量会重新复制一份,而对于引用类型的变量只是对引用进行拷贝,没有对引用指向的对象进行拷贝。

而深拷贝是指在拷贝对象时,同时会对引用指向的对象进行拷贝。

区别就在于是否对  对象中的引用变量所指向的对象进行拷贝。

具体样例请参考这篇博客:https://www.cnblogs.com/dolphin0520/p/3700693.html

五、String类的==和equals()方法

首先应该明确String对象的两种生成方式:

1、作为基本类型使用 String str1 = “aaa”;这时会在String缓冲池中寻找与str1内容相同的String对象,如果有,直接将该对象的引用赋值给str1,没有则new一个对象,相当于第二种生成对象的方式;

2、用new来创建一个新对象,这时会分配一个新的内存堆:String str2 = new String(“abcdefg”);

String有两种比较方式:==和equals():

“==”比较的是针对两个String类型的变量的引用,也就是说如果两个String类型的对象指向同一个内存堆,则返回true,在上面的例子中,如果String缓冲池中已经有内容为“aaa”的对象(假设名称为str3),则str1 == str3 返回true

用Object对象的equals()方法String对象继承自Object,并且对equals方法进行了重写,用此方法进行比较时,其实是对String对象封装的字符串内容进行比较,相同返回true。 也就是说,不考虑内存堆的情况,仅考虑对象的内容。

下面举几个例子:

String str1 = new String("aaa");
String str2 = "aaa";//在缓冲池中找到'aaa",因此str2与str1指向同一个内存堆
str1 == str2;//true
str1.equals(str2);//true

String str1 = "aaa";//缓冲池中找不到"aaa",则new一个对象,相当于第一个例子中的操作
String str2 = "aaa";//缓冲池中找到"aaa",str2与str1指向同一个内存堆
str1 == str2;//true
str1.equals(str2);//true

String str1 = new String("aaa");
String str2 = new String("aaa");
str1 == str2;//false,两个都是new出来的对象,指向不同的内存堆
str1.equals(str2);//true,内容相同

String str1 = "a" + "b" + "c";//缓冲池中找不到"abc",则new一个对象,相当于第一个例子中的操作
String str2 = "abc";//缓冲池中找到"abc",str2与str1指向同一个内存堆
str1 == str2;//true
str1.equals(str2);//true

String str = "ab";
String str1 = "abc";
String str2 = s + "c";
str1 == str2;//false,因为str是变量,那么str无论是和常量还是和其他变量相+,在源码里面得到的新串,都是new出来的一个新的String,这个String是放在堆里面的。既然是new 出来的,那自然不是同一个对象。
str1.equals(str2);//true

其实单独拎出来的话,每一个点都能写一篇详细的博客,不过,懒癌晚期没救了QAQ

Java第二次上机随笔的更多相关文章

  1. JAVA第二次作业展示与学习心得

    JAVA第二次作业展示与学习心得 在这一次作业中,我学习了复选框,密码框两种新的组件,并通过一个邮箱登录界面将两种组件运用了起来.具体的使用方法和其他得组件并没有什么大的不同. 另外我通过查阅资料使用 ...

  2. Java第二周作业

    Java第二周作业 本周作业: 参考http://www.cnblogs.com/rocedu/p/7911138.html 学习第二三章视频 参考http://www.cnblogs.com/roc ...

  3. 2018-03-11 20165235 祁瑛 Java第二周考试总结

    20165235 祁瑛 Java第二周考试总结 课后习题p16 代码编写 class Person { void speakHello (){ System.out.print("nin h ...

  4. java第二周的作业

    package java第二周学习; import javax.swing.JOptionPane; public class 数学题 { private int a; private int b; ...

  5. Java 第二次测试总结

    Java 第二次测试总结 1. 相关知识点总结 Java测试题循环与递归知识点 补充知识点: for循环语句:for(表达式1:表达式2:表达式3)表达式一负责完成变量的初始化!表达式2是值为bool ...

  6. SDN 第二次上机作业

    SDN第二次上机作业 1.控制器floodlight所示可视化图形拓扑的截图,及主机拓扑连通性检测截图 拓扑 连通性 2.利用字符界面下发流表,使得'h1'和'h2' ping 不通 流表截图 连通性 ...

  7. “全栈2019”Java第二章:安装JDK11(Windows)

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 文章原文链接 "全栈2019"Java第二章:安装JDK11(Windows) 下一 ...

  8. 20155210潘滢昊 Java第二次试验

    20155210潘滢昊 Java第二次试验 实验内容 学会JunitTest的使用 实验代码 MyUtilTest代码: import org.junit.*; import junit.framew ...

  9. “全栈2019”Java第二十九章:数组详解(中篇)

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

随机推荐

  1. LOJ#6374 网格

    题解: 挺好的一道题 两次容斥+一次二项式反演 首先考虑部分分不存在k的限制 然后我们发现两维之间是互相独立的 下面以x轴为例 然后问题就变成了 $$\sum\limits_{i=1}^{R} {xi ...

  2. Very Long Suffix Array

    题解: 原来动态开点平衡树是O(n)空间的.. 只需要在split的查找和出来之后动态开点就可以了 这题的结论是2^(b[a[i]+1]>b[a[i+1]+1]的个数) 前60分是普通的平衡树操 ...

  3. CocosCraetor中图像资源Texture和SpriteFrame的区别

    Texture是保存在GPU缓冲中的一张纹理.是由一张图片创建获得的. SpriteFrame是Texture+Rect,根据一张纹理材质来剪切获得. SpriteFrame是Texture+Rect ...

  4. Xcode 10.1 运行老版本工程遇到问题解决记录

    近来接手公司一个历史遗留项目进行修改.上线工作,想想我都近三年没敲过iOS代码了也是慌.. 项目大致情况: 18年年初应上线项目,各种情况下一直搁置,到18年底了要重启上线,原来开发人员离职了都,年底 ...

  5. url.cn短网址批量缩短开发接口

    https://www.showapi.com/api/view/1728 //md5签名方式--非简单签名 <?php header("Content-Type:text/html; ...

  6. web-storage-cache 使用JS数据缓存

    https://github.com/WQTeam/web-storage-cache 使用WebStorageCache,只要在页面上引入下面代码即可. <script src="s ...

  7. 【省选十连测之九】【DP】【组合计数去重】【欧拉函数】基本题

    目录 题意: 输入格式: 输出格式: 数据范围: 思路: 嵌套题的转移 基本题的转移 Part1 Part2 Part3 代码 题意: 这是一个关于括号组合的题. 首先定义一道题是由'(',')',' ...

  8. 如何给小学生讲清楚ECC椭圆曲线加密

    对于RSA这套公私钥加密的思路,我以为我挺明白的,运用的娴熟自如. 当然现在RSA用的不多,而是基于ECC曲线来做签名验签,最大名鼎鼎的莫过于比特币. 可是前两天和别人讲代码,被问了ECC为什么可以用 ...

  9. HDU-AcmKeHaoWanLe训练实录

    菜鸡队训练实录. 现场赛记录:[名称:奖项/排名] 2017: ICPC Shenyang:Gold/3 CCPC Hangzhou:Gold/3 ICPC Beijing:Gold/13 CCPC ...

  10. 【转】Android studio安装与配置

    Android studio安装与配置 1.首先下载Android studio安装包,可以从http://www.android-studio.org/下载最新版本,这里采用3.0版本进行演示,对应 ...