
java基础
文章平均质量分 80
主要记录了java基础知识
zqhwboy
我想赢,但我并不怕输.
展开
-
深入class文件了解静态代码块、代码块、构造器顺序
面试题 1class Root{static { System.out.println("Root的静态初始化快"); } { System.out.println("Root的普通初始化快"); }public Root() { System.out.println("Root的无参数的构造器"); } }class Mid extends Root{ stat原创 2021-11-17 19:47:08 · 497 阅读 · 0 评论 -
线程池总结
run() 和start()方法区别run()方法是普通方法的调用,通过idea断点调试,从始至终都是一个线程start()调用会另开一个线程去执行具体代码如下package T1.threaddemo;public class ThreadDemo extends Thread{ private String name; public ThreadDemo(String name) { this.name=name; } @Ove原创 2021-11-14 17:13:56 · 1256 阅读 · 0 评论 -
HashMap源码总结
1.hash()方法:hash()方法做了什么key.hashCode是返回的是地址值,如果key没重写hashCode时候,重写了调用的是自己的,hash方法将hashCode的高16位与低16位异或运算得到的值,这样能充分运用到高16位static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}2.get(原创 2021-11-14 13:18:42 · 672 阅读 · 0 评论 -
两种比较器对比
比较器概述一 、 说明:Java中的对象,正常情况下,只能进行比较:== 或!=;不能使用> 或< 的 但是在开发场景中,我们需要对多个对象进行排序,言外之意,就需要比较对象的大小.如何实现?两个接口中的任何一个:Comparable 或ComparatorComparable接口 自然排序Comparable接口的举例 @Test public void test1(){ String[] arr=new String[]{"AA","CC",原创 2021-11-10 15:02:51 · 385 阅读 · 0 评论 -
懒汉式单例
懒汉式单例双重检测//懒汉式单例public class Singleton { private static Singleton singleton=null; //避免外区去new private Singleton() { } public static Singleton getSingleton() { if(singleton==null) synchronized (Singleton.class){原创 2021-11-05 09:52:02 · 110 阅读 · 0 评论 -
深入迭代器,了解并发修改异常
迭代器的一些基础知识hasNext() :此方法用来判断下一个元素,其实后面可以通过源码去理解next() :获取迭代器对象当前索引位置的元素并将索引下标移至下一个元素remove() :删除参数中指定元素https://www.cnblogs.com/zhuyeshen/p/10956822.html通过一个问题深入迭代器遍历ArrrayList移除一个元素fori遍历正序遍历下面代码会出现一些紧邻需要移除的重复元素没有被移除import java.util.ArrayList;原创 2021-10-29 18:40:19 · 346 阅读 · 0 评论 -
字符串一看就会,一问就废
String类先看一些源码提提神public final class String //final修饰说明不可变性,不能被继承 实现了 可序列化比较 等规范 implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final char value[]; //底层还原创 2021-06-02 16:12:25 · 96 阅读 · 0 评论 -
枚举类与注解
枚举类一 枚举类的使用类的对象只有有限个,确定的.我们称此类为枚举类当需要定义一组常量时,强烈建议使用枚举类如果枚举类中只有一个对象,则可以作为单例模式的实现方式.星期:性别:季节支付方式:二、如何定义枚举类方式一:jdk5.0之前,自定义枚举类package compareTest;/** 自定义枚举类:*/public class SeasonTest { public static void main(String[] args) {原创 2021-06-02 15:29:35 · 91 阅读 · 1 评论 -
多线程一看就会,一问就废
多线程idea的一些设置bin 目录下 idea64.ex3.vmoptions-Xms128m //初始的内存值,增加该值可以提高Java程序的启动速度 16G内存的机器可尝试设置为Xms512m-Xmx750m //设置最大内存数,提高改值,可以减少内存Garage收集的频率,提高程序的性能-XX:ReservedCodeCacheSize=512m //保存的代码缓存512m-XX:+UseConcMarkSweepGC-XX:SoftRefLRUPolicyMSPer原创 2021-05-27 17:36:10 · 114 阅读 · 0 评论 -
集合一看就会,一问就废
根着尚硅谷老师java视频做的笔记集合Java集合框架概述集合、数组都是对多个数据进行存储操作的结构,简称Java容器.说明:此时的存储,主要是指的是内存层面的存储,不涉及持久化存储(.txt,.jpg,.avi, 数据库中)数组存储多个数据方面的特点2.1特点一旦初始化以后,长度就确定了数组一旦定义好,其元素的类型也确定了.我们也就只能操作指定类型的数据了,比如:String[] arr; int[] arr1; Object[] arr2;(Object可以装他的子类)原创 2021-05-22 13:17:04 · 158 阅读 · 0 评论 -
异常
跟着尚硅谷老师视频学习笔记异常1.异常概述与异常体系结构异常:在Java语言中,将程序执行中发生不正常情况称为异常(开发过程中语法错误和逻辑错误不是异常)异常事件可分为两类Error:java虚拟机无法解决的严重问题.如:JVM系统内部错误、资源耗尽等严重情况.比如:StackOverflowError和OOM.一般不编写针对性代码进行处理//StackOverflowError 栈溢出public class ErrorTest { public static vo原创 2021-05-10 13:46:45 · 109 阅读 · 2 评论 -
包装类的使用
包装类(Wrapper)/** 包装类的使用* 1.java提供了8种基本数据类型对象的包装类,使得基本数据类型的变量具有类的特征* 2.掌握的:基本数据类型 String 包装类三者之间的转换* */基本数据类型 String 包装类三者之间的转换基本数据类型–>包装类package T1;import org.junit.Test;public class WrapperTest { //基本数据类型-->包装类 //调用包装类的构造器原创 2021-05-09 15:45:05 · 105 阅读 · 0 评论 -
面向对象(下)
面向对象(下)关键字 :static/** static关键字的使用* 1.static:静态的* 2.static 可以用来修饰:属性、方法、代码块、内部类 不可以修饰构造器* 3.使用static修饰属性:静态变量(类变量)* 3.1 属性:按是否使用static修饰,又分为:静态属性vs非静态属性(实例变量)* 实例变量:我们创建了类的多个对象,每个对象都独立的拥有一套类中的非静态属性,当修改其中一个对象的* 非静态属性时原创 2021-05-09 15:39:08 · 123 阅读 · 0 评论 -
面向对象(上)
根据尚硅谷老师视频笔记总结面向对象(上)java面向对象学习的三条主线Java类及类成的成员:属性、方法、构造器、内部类面向对象的三大特征:封装、继承、多态、(抽象性)其他关键字:this、super、static、final、abstract、interface、package、import“大处着眼,小处着手”面向过程与面向对象二者都是一种思想,面向对象是相对于面向过程而言的.面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做.面向对象,将功能封装进对象,强调具备了功能的对象,原创 2021-05-01 16:02:45 · 128 阅读 · 0 评论 -
数组
跟着尚硅谷老师视频写的笔记# 数组数组,是多个相同类型按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理.* 数组的特点:* 1.数组是有序排列的* 2.数组是引用类型变量,数组的元素既可以是基本数据类型,也可以引用数据类型* 3.创建对象会在内存中开辟一整块连续空间* 4.数组的长度一旦确定,就不能修改*数组的分类 按照维数:一维 二维 按照类型:基本数据类型元素的数组、引用数据类型元素的数组一维数组的使用一维数组的声明和初始化如.原创 2021-04-24 19:36:54 · 107 阅读 · 0 评论 -
基本语法
视频笔记看尚硅谷老师整理的基本语法关键字被java语言赋予了含义,用做专门用途的字符串(单词)关键字中所有字母都为小写保留字goto const 尚未使用的,以后可能会用,但不一定用标识符Static可以通过,因为java严格区分大小写如果不遵守如上规则,编译不通过,需要大家严格遵守标识符的命名规范(不遵守可以通过,但是建议遵守)包名:多单词组成时所有字母都小写:xxxyyyzzz类名 接口名:多单词组成时,所有单词首字母大写XxxYyyZzz变量名 方法名:多单词组原创 2021-04-22 10:19:13 · 120 阅读 · 0 评论 -
Java语言概述
跟着尚硅谷老师视频记得笔记概述语言的历史2004年JDK 1.5更名为5.02009年Oracle公司收购SUN2014年JDk 8.0java语言体系平台传统的角度来看Java SE 标准版,支持桌面级应用(很少用它去写了)Java EE 企业版Java MeJava Card从现在的角度看企业级应用Android平台应用大数据平台开发Java语言的特点1.舍弃了c语言容易引起错误的指针(以引用取代)2.比c语言增加了垃圾回收器功能3…(这些特点原创 2021-04-18 16:45:57 · 350 阅读 · 1 评论 -
反射
一个类在 JVM 中只会有一个 Class 实例代码链接地址,这篇文章值得读public class Person { public String name = "zhangsan"; private int a; public Person(int b) { this.a=a; }}public class A { public static void main(String[] args) throws ClassNotFoundExce原创 2021-04-16 16:48:12 · 68 阅读 · 0 评论 -
5问明白多态(深挖笔试题)
5问明白多态(深挖笔试题)请问运行结果是啥?public class InterviewTest1 { public static void main(String[] args) { Base1 base = new Sub1(); base.add(1, 2, 3); Sub1 s = (Sub1) base; s.add(1, 2, 3); }}class Base1 { public void add(int a, int... arr) { System.o原创 2021-04-16 16:46:20 · 128 阅读 · 0 评论 -
Integer你需要知道的(== equals hashCode)
IntergerString你需要知道的看这个猜猜结果是什么?public interface A { public static void main(String[] args) { Integer a=127; Integer b=127; Integer c=221; Integer d=221; System.out.println(a==b); System.out.println(a.e原创 2021-04-16 16:39:32 · 134 阅读 · 0 评论 -
s+=1 和 s=s+1看了这篇,你会明白好多自己不知道的(对小白)
s+=1和s=s+1区别下面的代码会报错,知道为什么么? short s = 1; s = s + 1;因为:1是int型,s+1会自动将s转化为int型进行运算,结果就是int型,果将int直接赋值给short会报错,高到第的转化需要强转.正确的写成下面这样 //注意加两个括号 short s = 1; s = (short) (s + 1);如果改成这样会对么? short s = 1; s = s + (short)1;原创 2021-04-12 16:33:27 · 5489 阅读 · 0 评论 -
重写equals必须重写hashCode一篇就够了
先上两个方法的源码hashCode源码 Object中源码 本地方法,这里说下官方加的注释 1.返回的是独享的哈希码值 2.一个Java应用程序的执行,在同一对象上多次调用该方法,要求返回相同的整数,但在equals中使用比较对象的信息被修改,或者应用程序到另一个执行相同的应用程序,这时候不需要一定保持一致 3.如果两个对象根据equals()比较后相等,然后调用{@code hashCode}方法是两个对象必须产生相同的整数结果。 4.如果两个对象不相等,则两个对象必须调用改方法可以产生不同原创 2021-03-28 19:56:53 · 209 阅读 · 0 评论 -
String和new String 以及+连接符 各种空的含义
推荐一篇大佬的文章,写的真心不错链接点击这里,看了真的会有大收获String news=new String()和String s=""的比较上代码:public class StringDemo { public static void main(String[] args) { String news=new String(); //已经初始化,内存中分配有空间,不过没有内容 System.out.println(news); //打印空的原创 2021-03-22 13:38:25 · 349 阅读 · 1 评论