java中基础类型的初始值,以及一些平时不注意的小知识
有时候总是卡在一些类型的初始值上,今天闲下来就来自己给自己记录一下。
String a;
如果直接打印会提示未初始化。并且未初始化的a不能比较。
这时,我们定义个person类
person{
String name;
private Integer age;
private int aa;
.......
}
我们来看看age会怎么样。
结果还是不能够打印,但是却可以用于比较
person p1= new person();
if("".equals(p1.getName())){
System.out.println("OK 空字符串");
}else if(p1.getName()==null){
System.out.println("OK null");
}
结果:OK null
2、int
int a;
System.out.println(a);
这里报错,不能够使用未实例化的。同时说明不能够用这个数运算。
同样放在类里面的 int aa
person p1 = new person();
System.out.println(p1.getAa());
这时候的 aa 打印出来是0。而且这个值还可以运算。
(同时也说明了一点,包装类默认值)
3、 Integer
p1.getAge打印出来是null.
4、说完上面的,来看一下我遇到的一些小实例。
String a1="a";
String a2="a";
String a3=new String("a"); if(a1==a3){
System.out.println("Y");
}else{
System.out.println("N");
} int a = 1;
Integer b = new Integer(1);
Integer c = new Integer(1); if(b.equals(c) ){
System.out.println("是");
}else{
System.out.println("否");
}
大家先看一下上面的a、b、c两两比较,结果是会输出是,还是否。
我先来告诉大家答案吧,a、b、c两两比较都是“是”
为什么?我来大致的解释一下。这里int 为基本数据类型,他们有一个特点,就是存在栈中的数据可以共享。int a = 1;已经在堆中开辟了一块空间,之后integer在去实例化的时候不会重新去new 一个,因为他是包装类。如果还是不明白,自己运行一下,然后在上网查一下java基本数据类型在内存中的知识。
看完上面数字的,我们在来比较一下a1、a2、a3
a1和a2,结果Y。 a1和a3,结果N
这里我也来解释一下吧,在java的内存中还有一个字符串池,利用String a1 = "a";实例化的a字符串会放到字符串池中,并在堆中开辟一个空间存放“a”。
当String a2="a";时发现已经有a1="a";了所以直接让a2指向a即可。
但是String a3=new String("a");并不能和Integer一样,它是一个类,要去堆中重新开辟一块空间。
java中基础类型的初始值,以及一些平时不注意的小知识的更多相关文章
- 关于JAVA中Byte类型的取值范围的推论(*零为正数,-128在计算机中的表示方法...)
先看一段推理<*一切都是在8个比特位的前提下,讨论二进制的符号位,溢出等等,才有意义*> +124:0111 1100 -124:1000 0100 +125:0111 1101 -125 ...
- Java中基础类库使用
Java中基础类库: 在这里我仅仅介绍几种我个人觉得会常常使用的 1:Object类中的Clone机制仅仅是对对象进行浅层次的克隆,假设须要进行深层次的克隆的话那么就要自己写(详细Clone方法请參考 ...
- Java中没有引用传递只有值传递(在函数中)
◆传参的问题 引用类型(在函数调用中)的传参问题,是一个相当扯的问题.有些书上说是传值,有些书上说是传引用.搞得Java程序员都快成神经分裂了.所以,我们最后来谈一下“引用类型参数传递”的问题. 如下 ...
- Java中String类型细节
Java中String类型细节 一 . String两种初始化方式 1 . String str1= “abc”;//String类特有的创建字符对象的方式,更高效 在字符串缓冲区中检测”abc”是否 ...
- - Java中boolean类型占用多少个字节 MD
目录 目录 Java中boolean类型占用多少个字节 1个bit(1位) 1个Byte(1字节,8位) 4个Byte(4字节,32位) 分析 官方文档中的描述 Markdown版本笔记 我的GitH ...
- Java中boolean类型占用多少个字节?我说一个,面试官让我回家等通知
摘自:https://www.cnblogs.com/qiaogeli/p/12004962.html 程序员乔戈里 腾讯面试官问我Java中boolean类型占用多少个字节?我说一个,面试官让我回家 ...
- CSAPP读书随笔之一:为什么汇编器会将call指令中的引用的初始值设置为-4
CSAPP,即<深入理解计算机系统:程序员视角>第三版,是一本好书,但读起来确需要具备相当的基本功.而且,有的表述(中译文)还不太直白. 比如,第463页提到,(对于32位系统)为什么汇编 ...
- Java中double类型的数据精确到小数点后两位
Java中double类型的数据精确到小数点后两位 多余位四舍五入,四种方法 一: double f = 111231.5585;BigDecimal b = new BigDecimal(f); d ...
- java中基本类型封装对象所占内存的大小(转)
这是一个程序,java中没有现成的sizeof的实现,原因主要是java中的基本数据类型的大小都是固定的,所以看上去没有必要用sizeof这个关键字. 实现的想法是这样的:java.lang.Runt ...
随机推荐
- 【转】分布式理论-CAP理论
一 CAP理论简述 CAP (Consistency, Availability, Partition Tolerance,) 理论是NoSQL数据库管理系统构建的基础. 强一致性:等同于所 ...
- Java 多线程 并发编程
一.多线程 1.操作系统有两个容易混淆的概念,进程和线程. 进程:一个计算机程序的运行实例,包含了需要执行的指令:有自己的独立地址空间,包含程序内容和数据:不同进程的地址空间是互相隔离的:进程拥有各种 ...
- Some settings of PostgreSQL
Here are some setting recommendations about checkpoints, some values to set in postgresql.conf. A ch ...
- M面经Prepare: Delete Words Starting With One Character
给定一个char array, 这个array是一个句子,然后给定一个字母,把这个array里面带有这个字母开头的单次删掉,操作是要求in place. 检测 array[i]==' ' & ...
- JS练习 改变文本框状态
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- WEB-INF/views/menu/list.jsp (line: 26, column: 58) equal symbol expected
根本原因是由于单引号和双引号的混乱使用导致的. 解决办法: 将双引号里面的双引号改成单引号: 单引号里面的双引号该成单引号. 我的问题好像又不是这样的,<c:forEach var=" ...
- android复习第一天-----简单的android常识
前言:要去面试了,这些天花一些事件把android中简单的知识点来串联的复习一下 1,android中的工程结构 src文件夹:存储android文件的源代码 gen文件夹:有工具自动生成,不要去修改 ...
- iphone设置铃声
iphone同步铃声 1.下载itunes 2.打开itunes.文件->将文件添加到资料库...选择一首歌曲加进去 3.右击新加的歌曲,显示简介->选项.调整结束开始时间.不得超过40秒 ...
- Atom 和 Sublime Text 相比哪个好?
好像截止到今天还分不出来,Sublime确实会快一点.
- Unable to resolve target 'android-19'
修改两个地方,解决上面的问题