自我记录--学习java那点事

学习Java那点事

2021.3.17:
--------今天做的题:
/
https://baijiahao.baidu.com/s?id=1616462063971752365&wfr=spider&for=pc
/
里头有些答案跟编译器出来的结果不一样

1.当需要往ArrayList,HashMap中放东西时,像int,double这种内建类型是放不进去的,因为容器都是装object的,需要像Integer这种类型。

2.super.getClass.getName() 得到的依然是子类的类名哦,在这里super跟this是一样的,我也不知道为啥,以后再看看。

3.用Integer定义两个数然后用 == 比较 结果是true。用int定义就是false
在这里插入图片描述

4.关于String类型的 equals跟==:{{{{{

(==比较的是地址,同一个对象地址则相同。equals比较值)

String作为一个对象来使用
例子一:对象不同,内容相同,"=="返回false,equals返回true

`String s1 = new String("java");
String s2 = new String("java");

System.out.println(s1==s2);            //false
System.out.println(s1.equals(s2));    //true

例子二:同一对象,"=="和equals结果相同

String s1 = new String("java");
String s2 = s1;

System.out.println(s1==s2);            //true
System.out.println(s1.equals(s2));    //true

String作为一个基本类型来使用
如果值不相同,对象就不相同,所以"==" 和equals结果一样

String s1 = "java";
String s2 = "java";

System.out.println(s1==s2);            //true
System.out.println(s1.equals(s2));    //true

}}}}}}

2021.3.18记的东西不见了我哭了

1.java (17^5) 符号是异或运算,转二进制,0异或1等于1,其他都是0;

**

2021.3.19

**
1.java中访问权限从大到小:
public>protected>默认(包访问权限)>private,因为protected除了可以被同一包访问,还可以被包外的子类所访问

2.InputStreamReader和OutputStreamWriter作用于字节,而FileReader和FileWriter作用于字符。
InputStreamReader是Reader的子类,将输入的字节流变为字符流,将一个字节流的输入对象变为字符流的输入对象

  1. 原子操作在线程中不需要加锁同步。
    原子性:指该操作不能再继续划分为更小的操作。
    Java中的原子操作包括:

       、除long和double之外的基本类型的赋值操作 
       、所有引用reference的赋值操作
       、java.concurrent.Atomic.* 包中所有类的一切操作
    

在这里插入图片描述

①无论如何,Integer与new Integer不会相等。不会经历拆箱过程,
②两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false
java在编译Integer i2 = 128的时候,被翻译成-> Integer i2 = Integer.valueOf(128);而valueOf()函数会对-128到127之间的数进行缓存
③两个都是new出来的,都为false
④int和integer(无论new否)比,都为true,因为会把Integer自动拆箱为int再去比

1abstract不能与final并列修饰同一个类  对的。

2abstract类中不应该有private的成员  对的:
abstract类中可以有private 但是不应该有。

3abstract方法必须在abstract类或接口中 对的:
若类中方法有abstract修饰的,该类必须abstract修改。接口方法默认public abstract4static方法中能处理非static的属性  错误:
在JVM中static方法在静态区,静态区无法调用非静态区属性。

6.关于位非运算有公式: ~表示按位取反

-n = ~n + 1~n = -n -1

7.在这里插入图片描述
考虑使用map键值对。思想为:循环遍历所有数据,每次都将遍历过的数据put进map。循环时使用target-numbers[i]与map内的数据进行对比。

2021.3.20

1.java的垃圾回收机制。
java提供了一个系统级的线程,即垃圾回收器线程。用来对每一个分配出去的内存空间进行跟踪。当JVM空闲时,自动回收每块可能被回收的内存,GC是完全自动的,不能被强制执行。程序员最多只能用System.gc()来建议执行垃圾回收器回收内存,但是具体的回收时间,是不可知的。当对象的引用变量被赋值为null,可能被当成垃圾。

Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。
在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。
这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。
堆大小 = 新生代 + 老年代。其中,堆的大小可以通过参数 –Xms、-Xmx 来指定。

java Thread中,run方法和start方法的区别。
run方法是线程内重写的一个方法,start一个线程后使得线程处于就绪状态,当jvm调用start方法后,一旦得到cpu时间片,线程启动会运行run。run函数是线程里面的一个函数不是多线程的。
run方法线程执行体.start方法开启多线程

在这里插入图片描述

如果子类构造器没有显示地调用超类的构造器,则将自动地调用超类默认(没有参数)的构造器。如果超类没有不带参数的构造器,并且在子类的构造器中有没有显示地调用超类的其他构造器,则Java编译器将报告错误。使用super调用构造器的语句必须是子类构造器的第一条语句。

switch case中,如果case不加break,在第一次匹配到case后下面的所有语句都会执行。

在这里插入图片描述
7.
在这里插入图片描述
对于-128到127之间的数字 Integer会进行自动装箱,所以a1==a2为true。但是b1 == b2会自动new对象,地址不同,所以为false。
c1c2是new了所以自然不同。d1d2应该上面说过了。

8.关于servlet核心控制器什么的关系。
在这里插入图片描述
9.
枚举语法定义的格式如下:

enum 枚举名 {枚举元素1,枚举元素2,……};
enum team { my , your = 9 , his , her = his + 3};
printf("%d %d %d %d\n",my , your , his , her);

没有指定值的枚举元素,第一个枚举成员的默认值为整型的 0。所以my为0。
对于已指定的值,后续枚举成员的值在前一个成员上加 1,以此类推。所以his为10。
题目已经指定:your为9,her = his + 3=13

2021.3.21

提取字符串中的每一个字符可以是:str.charAt(i)
打印数组用Arrays.toString(arr)
对于Object list 好像需要用 list.get([])这样子;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值