『Java』Java当中会有那些误区?( 四 )
变量为基本数据类型 : 值在栈上
变量为引用数据类型 : 值在堆上
当一个引用类型中有另一个引用类型属性时 , 该引用类型堆上存储的是 另一个引用类型属性的堆上的地址
例 : 一个Teacher类中含Student属性 , 当创建一个Teacher对象和一个Student对象 后 , 把Teacher的Student属性初始化为Student对象的值 则Teacher中Student属性的值存储的是Student对象的地址 , Student对象的值存储在Student开辟的堆上
ArrayList 添加元素是存数元素堆上的地址
常量存储机制
Java中认为-128~127之间的数字为常用的 , 把这些数字对象定义为常量对象 , 当使用 -128~127之间的数字对象时 , 引用指向常量区的同一个数字
如果使用new创建新对象 , 即便在常量范围内也要新建对象
Boolean中的两个值也定义为常量
String不使用new直接初始化 , 则值存放在常量区(首先去常量区查看是否有改值的常量 , 有则直接指向该常量 , 无则创建后指向该值)
对于多次使用的字符串 , 使用常量(指向常量空间)节省空间
对于使用一次的字符串 , 使用变量(new一个新空间)使用完即释放内存
Java中的自动拆装箱
对于基本数据类型 Java有自动装箱拆箱的操作
装箱
实现基本类型和引用类型的相互转换装箱 , 自动把基本类型转换为对应的引用类型
arrayList.add(10);——>arrayList.add((new Integer)10)
拆箱
自动把引用类型转换为对应的基本类型
Integer a=100+200;
两个栈上基本类型相加得到一个堆上引用类型
可以相互混用 , 系统自动转换
当集合不使用泛型 , 则默认为Object类型 , 没有对应的基本类型 , 无法自动拆箱
Java中基本类型对应的引用类型
基本类型(栈上)——>引用类型(堆上)
byte——>Byte
short——>Short
int——>Integer
long——>Long
float——>Float
double——>Double
char——>Character
boolean——>Boolean
集合中的基本类型实际上是对应右边的引用类型
Java中IO常用语句
二进制文件一般使用字节型io
FileInputStream 对象名=new FileInputStream(\"文件路径\");
文件读入 , 将文件中的数据读入电脑
FileOutputStream 对象名=new FileOutputStream(\"文件路径\");
文件写出 , 将电脑中的数据写出到文件
字符文件使用字符io
FileReader 对象名=new FileReader(\"文件路径\");
文件读入 , 将文件中的数据读入电脑 , char类型读入(汉字不会出现乱码)
FileWriter 对象名=new FileWriter(\"文件路径\");
文件写出 , 将电脑中的数据写出到文件 直接String类型输入
当用Writer输入时;
对象名.newLine();可以换行(只有writer可以有换行)
Object文件io
ObjectOutputStream
ObjectInputStream
writeObject(object对象名);
object写入 , 每次写入一个对象
readObject();文件object类型读取 , 返回值为object , 每次读取一个对象
对象io写入时必须进行对象序列化:序列化过程就是把对象中的数据转换成二进制的过程 , 让电脑可识别
Serializable : 可序列化接口
implements Serializable , 实现该接口就可以自动实现序列化
IO缓存区读写
以上四种都有Buffered方式
例
BufferedInputStream 对象名=new BufferedInputStream(FileInputStream创建的对象名);
BufferedOutputStream——同上
BufferedReader——同上
BufferedWriter——同上
创建一个缓存空间 , 运行时间远远小于直接FileInputStream输入文件
io流结束后注意关闭close()
推荐阅读
- 「杨蕾聊八卦」支付宝总是使用“花呗分期”都会有什么影响?网友懊悔:到现在才明白,原创
- 开源中国@33 计划使用 OpenJDK 11 作为默认 Java 版本,Fedora
- 环球趣闻档案室▲地球自转逐渐减缓,彻底停止后会有什么影响?生物灭绝,最新研究
- Java架构师技术栈分享■request body读取流程详解,nginx
- 懒人有控■端游级电竞体验,会有惊喜吗?,联想拯救者电竞手机将发布
- 『IT之家』S6 5G新品发布会有奖直播(视频),点亮夜色点亮你:vivo
- 「小胖先森」以后也不会有,赵明:荣耀智慧屏没有开关机广告
- [千锋广州]5个常用的Java微服务开源框架推荐
- 「Java架构学习交流」从基本概念深入到实现,跟面试官侃半小时MySQL事务隔离性
- 手机数码领域作者▲价格和海外会有何不同?,国内版p40系列发布