java基础
zmh冲冲冲
这个作者很懒,什么都没留下…
展开
-
JVM-String:intern()方法
intern()的使用: 如果不是用双引号声明的String对象,可以使用String提供的intern方法:intern方法会从字符串常量池中查询当前字符串是否存在,若不存在就会将当前字符串放入常量池中。 比如:String myInfo = new String(“I love atguigu”).intern(); 也就是说,如果在任意字符串上调用String.intern方法,那么其返回结果所指向的那个类实例,必须和直接以常理形式出现的字符串实例完全相同。因此,下列表达式的值必定是tru原创 2020-12-31 14:43:37 · 226 阅读 · 0 评论 -
JVM-String:字符串拼接操作
1.常量与常量的拼接结果在常量池,原理是编译器优化 @Test public void test01(){ String s1 = "a" + "b" + "c";//等同于"abc" String s2 = "abc";//"abc"一定是放在字符串常量池中,将此地址赋给s2 /** * 最终 .java编译成.class,再执行.class * String s1 = "abc"; * Stri原创 2020-12-24 20:19:33 · 277 阅读 · 0 评论 -
JVM-String:String的基本特性
String:字符串,使用一对""引起了表示。 String s1 = “zmh”;//字面量的定义方式 String s2 = new String(“hello”); String声明为final,不可被继承 String实现了Serializable接口:表示字符串是支持序列化的。 实现了Comparable接口:表示String可比较大小 String在jdk8及以前内部定义了final char[] value用于存储字符串数据。jdk9原创 2020-12-22 20:57:13 · 139 阅读 · 0 评论 -
理解Callable接口
Callable接口是另一种获得线程的方法,在这之前,所知道的获得线程的方法是:继承Thread类,实现Runnable接口。 在这里需要知道runnable接口和callable接口的区别 Callable有返回值,runnable没有返回值 Callable抛异常,runnable不抛异常 落地方法不一样,一个是run,一个是call class mythread1 implements Runnable{ @Override public void run() { // TODO Auto原创 2020-07-12 10:47:14 · 139 阅读 · 0 评论 -
java多线程:生产者和消费者(两种方法) 不去继承Thread类或实现Runnable接口的写法
题目:现在两个线程,可以操作初始值为零的一个变量,实现一个线程对该变量加1,一个线程对该变量减1,实现交替,来10轮,变量初始值为零。 方法一:使用synchronized控制 先创建资源类 class Aircondition{ private int number = 0; public synchronized void increment() throws Exception{ ...原创 2020-05-25 11:22:55 · 288 阅读 · 0 评论 -
==和equals方法
java程序中测试两个变量是否相等有两种方式:一种是利用= =运算符,另一种是利用equals()方法。 当使用= =来判断来判断两个变量是否相等时,如果两个变量是基本类型变量,且都是数值类型(不一定要求数值类型严格相同),则只要两个变量的值相等,将返回true。但对于两个引用类型变量,只有他们指向同一个对象时,= =判断才会返回true。= =不可用于比较类型上没有父子关系的两个对象。 clas...原创 2020-04-12 21:08:45 · 102 阅读 · 0 评论 -
java 初始化块
首先需要知道,一个类里面可以有多个初始化块,相同类型的初始化块之间有顺序:前面定义的初始化块先执行,后面定义的初始化块后执行。 初始化块的修饰符只能是static,使用static修饰的初始化块被称为类初始化块(静态初始化块),没有static修饰的初始化块被称为实例初始化块(非静态初始化块)。 实例初始化块和构造器 实例初始化块的基本用法:如果有一段初始化处理代码对所有对象完全相同,且无须接收任...原创 2020-04-08 09:37:52 · 123 阅读 · 0 评论 -
java 理解内存中的数组
看《疯狂java讲义》数组的部分,对自己之前不清楚的部分做个总结。 内存中的数组 public class ArrayInRam { public static void main(String[] args) { // 定义并初始化数组,使用静态初始化 int[] a = {5,4,3}; int[] b = new int[4]; //b数组的长度 System.out....原创 2020-03-28 11:22:48 · 97 阅读 · 0 评论