自己java复习笔记

jdk、jre、jvm

jdk:首先我们编写java代码我们直接通过.txt文本也是可以进行编写java代码,但是我们需要怎么去运行呢,这就需要javac,就是java编译器,通过java编译器把java文件编译为字节码文件,然后在通过jvm运行我们的代码
jre:jre里面是包括了jvm还有java编译器,所以一般客户电脑上我们就需要安装jre就可以了
jvm:jvm为java虚拟机,jvm就是来执行java编译器编译完成后的字节码文件的。

==、equals、hashCode

==:
1.判断基础类型时比较的是值是否相等
2.判断引用类型时比较的是引用地址是否相等
equls:
1.在不重写的前提上判断的是引用地址是否相等(和==功能类似)
2.重写hashcode和equals以后判断的是值是否相等
hashcode
在java程序中任何对象都可以调用的自己的hashcode,相当于对象的身份证,按道理这世界上应该不会有身份证相同的情况,但是java做不到那么绝对,但是我们还是可以通过hashcode来进行判断
2个hashcode不相同的对象,两个对象肯定是不同的对象
2个hashcode相同的对象,不代表这两个对象就是同一个对象,也有可能是两个对象

分布式ID生成方式

1.UUID
2.数据库自增ID
3.Redis
4.雪花算法Snowflake:1.所生成的ID按时间递增2.整个分布式系统不会有重复的ID

String、StringBuffer,StringBuilder

从长度方面说:
String一旦创建好,值是不能进行改变的,如果去改变他,他会重新创建一个对象
StringBuffer:值可以改变通过append()方法 线程安全的
StringBuilder:值可以改变通过append()方法 线程不安全的 在单线程的情况下使用StringBuilder效率更高

  public static void main(String[] args) {
        //重新赋值会新建对象
        String a="张三";
        System.out.println(a.hashCode());
        a="ab";
        System.out.println(a.hashCode());


        //StringBuffer无论append多少hashcode都是一样
        StringBuffer sbf=new StringBuffer();
        sbf.append("1");
        System.out.println(sbf.hashCode());
        sbf.append("2");
        System.out.println(sbf.hashCode());

        //StringBuilder无论append多少hashcode都是一样
        StringBuilder sbd=new StringBuilder();
        sbd.append("1");
        System.out.println(sbd.hashCode());
        sbd.append("2");
        System.out.println(sbd.hashCode());
    }

在这里插入图片描述

ApplicationContext和BeanFactory的区别

beanfactory是spring里面非常核心的组件,他可以生产bean,维护bean。ApplicationContext里面是继承了beanFactory所以说ApplicationContext拥有beanfactory所有的特点和功能,并且还继承了EnvironmentCapable,
MessageSource,ApplicationEventPublisher等接口,所以ApplicationContext可以获取系统环境变量,国际化等这是beanfactory所不具备的

ArrayList和LinkedList的区别

首先ArrayList的底层为数组,LinkedList的底层为链表
由来他们底层的数据结构不同,所以说应用的场景有所区别,ArrayList比较适合随机查找,LinkedList更适合删除和添加。
LinkedList还可以当成队列使用,他底层是继承了Deque接口

B树和B+树的区别,为什么mysql要使用B+树

B树的特点:
节点排序。
一个节点可以存储多个元素,并且多个元素也排好序
B+树的特点:
拥有B树的特点
叶子节点之间是有指针的
叶子节点存储了所有的元素,并且都排好序了

mysql为什么要使用b+树,mysql里面索引使用的是b+树,因为索引是用来提供更快查询速度的,通过b+树的排序的特点所以可以提供查询效率。而且使用b+树可以更好的提升全表扫描和指定范围条件的查找的sql语句。

CopyOnWriteArrayList

首先我们应该了解什么是CopyOnWriteArrayList
其实这个底层也是一个数组,这个CopyOnWriteArrayList的特点是,当我们进行写操作的时候,这个会新建一个数组(会上一把锁,为了反正在并发的情况下写的数据丢失这种情况),读的时候不会,感觉就有点像读写分离。当写操作完成以后会把新数组重新指向为原来的那个数组。适合读操作远远大于写操作的时候。

hashMap和hashTable

相同点:
1.都是通过key value的存储方式
2.都是java.util包下的
3.负载因子都是0.75
4.部分方法都系统 比如 put remove get等
不同点:
1.hashmap是线程不安全的,hashtable是线程安全的(通过put方法点击底层可以看见 hashmap没有用synchronized修饰 hashtable使用synchronized修饰)
2.hashmap可以允许null hashtable不允许存储null(通过put方法可以发现hashtable校验了里面的值如果为null会抛出空指针异常)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
期末考试题型: 一、 填空题(本题共15空 ,每空1分,共15分。) 二、 单项选择题(本题共20小题,每题1分,共20分。) 三、 是非题(对划“√”,错划“×”,本题共10小题,每题1分,共10分。) 四、 简答题(本题共5小题,每小题5分,共25分。) 五、 程序填空题(本题共5空 ,每空2分,共10分。) 六、 编程题(本题共2小题,每小题10分,共20分。) 二、填空题 1、Java语言是一种完全的_面相对象___程序设计语言。 2、布尔型常量有两个值,它们分别是_true__、_false___。 3、在定义一个方法时,一般都要指明该方法的返回值类型,如果它不返回任何值,则必须将其声明成 void 。 4、在Java语言环境中已经包含了一组相关的核心类库,它们属于Java.lang包。 5、写出完整的main方法的声明 public static void main(String args[]) 。 6、要设计一个Applet小程序,必须先引入包 java.applet 。 7、设x=2.5,a=7,y=4.7,算术表达式x+a%3*(int)(x+y)%2/4的值为:2.75___ 8、被关键字_final___修饰的方法是不能被当前类的子类重新定义的方法。 9、Java中类成员的限定词有以下几种:private, _protected__, public__, 默认友好。 10、基类的公有成员在派生类中的访问权限由_基类___决定。 11、用static修饰的方法,称为静态方法。它们不是对象的方法,而是整个类的方法。静态方法只能处理用关键字_static___修饰的数据。 12、在Java中有一种叫作__构造方法__的特殊方法,我们在程序中用它来对类的对象成员进行初始化。 13、面向对象技术具有_封装性___、_继承性___、_抽象性___、多态性等特性。 14、Java中所有类都是类 _Object___的子类。 15、顺序执行以下两个语句的输出结果是: 10 。 String s = “我喜欢学习Java!”; System.out.println(s.length( )); 16、据程序的构成和运行环境的不同,Java源程序分为两大类: Application 程序和 Applet 程序。 17、如果一个Java源程序文件中定义有4个类,则使用Sun公司的JDK编译器javac编译该源程序文件将产生 4 个文件名与类名相同而扩展名为 class 的字节码文件。 18、开发与运行Java程序需要经过的三个主要步骤为 编辑源文件 、 编译器编译生成字节码文件 和 解释器执行 。 19、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是 Applet 类的子类并且存储该源程序文件的文件名必须为 MyApplet.java 。 20、 一个Java Application源程序文件名为MyJavaApplication.java,如果使用Sun公司的Java开发工具JDK编译该源程序文件并使用其虚拟机运算这个程序的字节码文件,应该顺序执行如下两个命令: javac MyJavaApplication.javajava MyJavaApplication 。 21、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码字符占用 2 字节内存空间,这样,无论是中文字符还是英文字符,每个都是占用2 字节内存空间。 22、在Java程序中定义的类有两种成员: 静态成员 、 实例成员 。 23、Java源程序是由类定义组成的,每个程序中可以定义若干个类,但是只有一个类是主类。在Java Application中,这个主类是指包含 main 方法的类;在Java Applet里,这个主类是一个系统类 Applet 的子类。 24、创建一个名为 MyPackage 的包的语句是 package MyPackage ; , 该语句应该放在程序的位置为: 程序中非注释行的第一行 。 25、 抽象或abstract 方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。 最终后final 方法是不能被当前类的子类重新定义的方法。 26、多态是指 一种定义,多种实现 ,在Java中有两种多态,一种是使用方法的 重载 实现多态,另一种是使用方法的 覆盖 实现多态。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值