目录
- 第一个知识点是明确==比较对象的时候,比较的是两个对象的地址
- String方法返回的对象是new String()方式返回的
- 第三个就是字面字符串和语法糖方式的对象会存放在常量池
- JAVA方法有传值操作和传址操作,传值操作会不会改变原来数据的
- 传址操作分为两种,一种是改变对象的引用地址。一种是改变对象的内存内容
- 改变对象的地址并不会改变对象的内容,比如String类型,是不可变的,所以str=test ok,只是将str的引用指向了test ok 常量池中的地址,其传入的对象的值并不会改变
- 首先我们最大b=表达式?a?b,如果表达式为true,则b=a,反之b=b
- 其次==的优先级大于? 则表达式变为b=true?false:(true==true)?false:true
- b=true?false:true?false:true->b=true?false:fa
- 因为在对象创建的时候,利用了匿名内部类重写了equals,其按照最近原则,会优先调用其覆写的方法
JDK和JRE和JVM
- 正常的有int/char/String/enum
- 但是小于4个字节的基本数据在内存中按4个字节存储 所以short byte也是
- 编译失败,因为方法内不能定义静态变量
import java.lang.*; import java.util.*; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNextLine()) { String str = sc.nextLine(); char[] arr = str.toCharArray(); String str1 = ""; for (int i = 0; i < arr.length; i++) { if (!str1.contains("" + arr[i])) { str1 += arr[i]; } } System.out.println(str1); } } }