一些java理解

本文介绍了Java中的基本数据类型和引用数据类型的差异,强调了字符串在内存中的创建和效率问题,推荐使用StringBuffer或StringBuilder进行高效拼接。还讨论了对象池的概念,new关键字的作用,以及迭代器在遍历容器中的重要性。此外,概述了输入输出流、序列化以及多线程的基本概念,包括进程与线程的区别以及Thread和Runnable的选择。
摘要由CSDN通过智能技术生成
  • 基本数据类型跟引用数据类型区别:前者直接存放数据的值,后者存放数据所在的地址。
  • java 八进制的字面量 以 0 开头,十六进制的字面量 以 0x 开头
  • 字符串:
    1.当JVM遇得双引号操作符时,JVM在字符串对象池中搜索该字符串对象是否已创建,如果有,返回其引用,如果没有,先创建再返回引用。
    2.如果使用new关键字,jvm会先执行1的步骤,然后再额外创建一个String对象。
    如下代码
		String s1 = "a";
        String s2 = "b";
        String s3 = "c";
        String s4 = "d";
        String s5 = s1 + s2 + s3 + s4;

上面代码首先产生 s1 s2 s3 s4 四个String 对象,由于String类的不可变性,执行第五行代码的时候,首先执行s1+s2 ,产生"ab" 字符串对象,然后 “asc"字符串对象,最后才产生"abcd”,所以上述代码一共产生了 7个字符串对象,有两个明显多余。可见,通过String直接相加得到字符串的效率是很低的。如果程序中需要拼接的字符串很多的话,JVM的负荷是非常大的,严重影响程序的性能。
如果遇到有大量字符串拼接的话,应该使用StringBuffer和StringBuilder,避免冗余字符串的产生。如下代码

		String s1 = "a";
        String s2 = "b";
        String s3 = "c";
        String s4 = "d";
        StringBuilder builder = new StringBuilder();
        builder.append(s1);
        builder.append(s2);
        builder.append(s3);
        builder.append(s4);
        String toString = builder.toString();

如果拼接过程中可能遇到线程安全的问题,用StringBuffer。
3.使用指定字符集创建字符串

		String a = "中文";
        String b = new String(a.getBytes(), "UTF-8");
        // 常常用来解决字符乱码

关于对象池:避免频繁的创建和销毁对象,降低程序性能
关于new关键字的作用:为对象申请内存空间,并且返回引用的值
关于迭代器:为什么要设计迭代器呢?迭代器是为容器而生,本质上是一种遍历的算法。因为容器的实现千差万别,很多时候不知道如何去遍历一个集合对象的元素。java为开发者提供了使用迭代器的接口,java的所有集合类都是可以迭代的。使用迭代器,不必关心容器内部的实现细节。
输入流输出流:输入流本质就是将外部输入(键盘输入、File流等)通过流读取到内存中,输出流就是将内存中的数据通过流写出到外部(显示器、磁盘等)RandomAccessFile类既可以输入也可以输出。
序列化:ObjectOutputStream对象调用writeObject方法序列化对象; ObjectInputStream对象调用readObject方法反序列化对象
多线程:进程: 整个程序或部分程序的动态执行。 线程是进程中的一个执行单元,又称为轻量级进程。 多线程:一种机制,允许在程序中并发执行多个指令流,每个指令流都称为一个线程。线程之间彼此独立,比较容易共享数据,通过并发执行提高程序的效率和性能。
进程和线程的区别

  1. 线程隶属于进程

  2. 进程是程序的动态形式,是CPU、内存等资源占用的基本单位,线程不能独占这些资源

  3. 进程之间相互独立,通信比较困难。线程之间共享一块内存区域,通信比较方便

  4. 进程在执行过程中,包含比较固定的入口、执行顺序和出口,线程的这些过程被应用程序控制。
    Thread跟Runnable的区别

  5. Thread不能继承其他类,Runnable可以

  6. Thread使用线程更方便一些

  7. 使用Runnable,可以更方便地访问同意变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值