javase
基础阶段的笔记
从int开始
这个作者很懒,什么都没留下…
展开
-
maven 默认为5.0的修改
方式一:这里选择你自己对应的jdk版本方式二:在你的pom.xml中:原创 2022-06-22 20:24:34 · 262 阅读 · 0 评论 -
序列化操作
序列化1.介绍序列化:指把Java堆内存中的对象数据,通过某种方式把对象数据存储到磁盘文件中或者传递给给网络上传输。序列化在分布式系统在应用非常广泛反序列化:把磁盘文件中的对象的数据或者把网络节点上的对象数据恢复成Java对象的过程。需要做序列化的类必须实现序列化接口:java.io.Serializable(这是标志接口[没有抽象方法])2.使用public class ObjectOutputStreamDemo { public static void main(String原创 2022-04-04 21:13:46 · 458 阅读 · 0 评论 -
Java中的I/O流
一、File类1.介绍代表磁盘上的文件或目录,基于java.io包下的类2.使用File f = new File("文件路径");补充:对于文件路径有两种:①相对路径:相对于当前位置的路径(在idea中:当前工程下的文件(与src同级的文件))②绝对路径:盘符:/文件夹/文件/…(一直到你想选择的文件为止)3.常用方法判断文件是否存在f.exists();获取文件的名字f.getName();获取路径---这里的路径是创建File对象时写的路径f.getPath();原创 2022-04-04 21:09:56 · 358 阅读 · 0 评论 -
Java中的多线程问题
一、概念进程:每一个应用程序运行都是一个进程,每一个进程都拥有一块独立的内存空间线程:线程是值进程中的一个执行任务,一个进程可以有很多的线程,线程都共享着进程的数据(所有会出现线程不安全的问题)二、创建线程方式一:继承Thread类步骤:1.继承Thread类2.重写run方法3.创建自定义线程类对象4.自定义线程类对象调用start方法public class MyThread extends Thread{ public void run(){ //线程要做的事情 }}原创 2022-03-19 22:13:29 · 832 阅读 · 0 评论 -
集合中的Set、Map接口以及比较器
一、Set接口特点:该容器不记录元素的添加顺序,也不能存储重复的元素常用的方法:Set<String> set = new HashSet<>();//添加set.add(Objetc o);//删除set.remove(Object o);//查询set.size();//获取集合中的元素个数set.contains(Object o);//判断集合中有无O对象元素注意:添加时,如果集合中存在的元素,再次add返回false就是添加失败。并不会出现异常常用原创 2022-03-15 18:39:08 · 518 阅读 · 0 评论 -
集合之迭代器介绍和使用
迭代器(集合遍历)1.引入:普通的for遍历List<String> list = new ArrayList<>();for ( int i = 0; i < list.size(); i++ ) { System.out.println(list.get(i));}2.使用迭代器遍历Iterator<String> iterator = list.iterator();while (iterator.hasNext()) { String s原创 2022-03-15 17:01:32 · 984 阅读 · 0 评论 -
泛型的介绍和使用
其实就是一种类型参数,主要用于某个类或接口中数据类型不确定时,可以使用一个标识符来表示未知的数据类型,然后在使用该类或接口时指定该未知类型的真实类型。public class User<T> { private T i; private T z;}public class User<T,E> {//多种不同类型的情况下 private T x; private E y;}1.泛型的类型必须为引用类型2.设置泛型类型是没有继承关系的,必须用原创 2022-02-25 18:33:38 · 446 阅读 · 0 评论 -
集合框架之List集合
List集合(是一个接口)是Collection接口的子接口存储特点:存储的元素是有顺序的、不可以存储重复的元素一、常用实现类ArrayList类:(常用)数组结构、底层是用数组存储元素的 线程不安全的,jdk1.2开始有LinkedList类:链表、表示双向链表和双向队列结构,采用链表实现Vector类:古老的实现类,底层使用数组存储元素,线程安全的,jdk1.0开始有Stack类:栈结构、底层使用数组存储二、常用方法ArrayList类/添加list.add(Object obj)原创 2022-02-25 18:21:59 · 413 阅读 · 0 评论 -
正则表达式
正则表达式规则:1.元字符2.量词一、元字符(规定好有特殊意义的字符)\\ 表示反斜线\t 表示制表符(Tab)\n 换行[123] 表示1或2或3[^456] 表示除了1、2、3之外任意字符[a-zA-Z0-9] 表示大小写字母、数字组成\d 表示数字\w 表示字母、数字、下划线\W 表示非字母、数字、下划线\s 表示所有空白字符(换行、空格等)\S原创 2022-02-25 17:30:32 · 401 阅读 · 0 评论 -
简单介绍日期中常用的类
一、Date类时间戳(time stamp):具体时间(特定的瞬间)距离历元(1970年01月01日00:00:00:000) 经过的毫秒数,用long类型存储。Date date = new Date();//获得时间戳获得1970年01月01日00:00:00:000 到现在为止的毫秒数long times = date.getTime();获得外国形式的时间格式String time = date.toString();二、SimpleDateFormat类日期的格式化类格式化原创 2022-02-25 17:07:44 · 477 阅读 · 0 评论 -
产生随机数字、字母的类和方法
一、Math类Math类包含用于进行数学运算的方法,如随机数、最大值和最小值、指数等,该类的方法都是static修饰的,所以这样看成是一个工具类。这个类位于java.lang包下,位于这个包下的类都不需要导包操作常用方法:1.产生随机数从[0.0 --》1.0),返回值类型是double类型Math.random();2.求最大值和最小值:Math.max(int num1,int num2);//最大值Math.min(int num1.int num2);//最小值3.向上取整和向下原创 2022-02-21 19:58:59 · 727 阅读 · 1 评论 -
String丶StringBuffer丶StringBuilder
String类:String:字符串 又称为不可变序列,定义好的字符串内容是不可以修改的。底层是用char[]存储的。1.字面量定义和使用构造器定义的区别:String str1 = "123";String str2 = new String("123");String str3 = "123"String str4 = new String("123");str1 == str2 ? 返回falsestr2 == str3 ? 返回truestr2 == str4 ? 返回false原创 2022-02-16 18:39:27 · 213 阅读 · 0 评论 -
BigDecimal类及常用方法
BigDecimal类:高精度数字类型\又称银行类只有调用其字符串的构造器才能有进行高精度计算的功能常用方法:加法:BigDecimal big1 = new BigDecimal("0.009");BigDecimal big2 = new Bigdecimal("0.001");BigDecimal result = big1.add(big2); 乘法:BigDecimal big1 = new BigDecimal("0.009");BigDecimal big2 = new原创 2022-02-16 18:20:12 · 625 阅读 · 0 评论 -
分享接口面试题
排错 属性同名 编译器分辨不出该调用哪个interface A {//public static final int x = 0; int x = 0;//属性}class B { int x = 1;//属性}//继承了B 实现了A 因为接口跟类是并列关系 同时都有x,编译器不知道使用哪个x合适class C extends B implements A { public void pX() { System.out.println(x);//这里会编译报错 S原创 2022-02-13 18:40:01 · 118 阅读 · 0 评论 -
工厂模式的简单概述
工厂模式(接口的应用)Factory实现了创建者与调用者的分离,即将创建对象的具体过程屏蔽隔离起来,达到提供灵活性的目的分类:简单工厂模式:工厂是个类优点:实现了创建者与调用者的分离缺点:违反了开闭原则(对扩展开发,对修改封闭)工厂方法模式:工厂使用接口定义,然后去实现工厂Java的反射机制与配置文件的巧妙结合突破了限制----Spring中体现抽象工厂模式:区别工厂方法,就是需要创建对象更复杂了...原创 2022-02-13 18:26:17 · 184 阅读 · 0 评论 -
接口的介绍和使用
关键字interface接口:主要用途就是被实现类实现(面向接口编程)1.解释:有时必须从几个类中抽取出一些共同的行为特征继承是一个"是不是"的关系,而接口实现则是 "能不能"的关系接口的本质是契约,标准,规范2.interface与类并列3.如何定义接口:JDK7.0之前:只能定义全局常量和抽象方法全局常量public static final的,但是写时可以省略(在接口中写)interface Flyable{ public static final int max_num= 1原创 2022-02-13 18:18:41 · 307 阅读 · 0 评论 -
抽象类的介绍以及匿名类对象
abstract关键字:抽象的1.abstract可以用来修饰的结构:类、方法2.abstract修饰类:抽象类此类不能实例化(创建对象\new对象)抽象类中一定有构造器,便于子类对象实例化(创建对象\new对象)调用开发中,都会提供抽象类的子类,让子类实例化,完成相关的操作3.abstract修饰方法:抽象方法抽象方法只有方法的声明,没有方法体有抽象方法的类一定是抽象类,反之抽象类中可以没有抽象方法例如:public abstract class AbatractDemo{ p原创 2022-02-13 17:09:41 · 1473 阅读 · 0 评论 -
final关键字的介绍
final:最终的1.final可以修饰的结构:类、方法、变量2.final 修饰一个类:此类不可以被继承(绝育类)比如:String类、System类、StringBuffer类3.final 修饰方法:表明此方法不可以被重写比如:Object类中的getClass()方法4.final 修饰变量:此时的"变量"就称为一个常量5.final 修饰属性:可以赋值的位置有:显式初始化:final int i =10;代码块中初始化:final int i;{ i=10}构造原创 2022-02-13 16:44:26 · 157 阅读 · 0 评论 -
单例模式的介绍和基本使用
单例模式单例模式是众多设计模式的其中一种.有且只有一个实例对象的设计,就是单例模式.为了节约内存空间和减少性能开销单例模式有两种实现方式1.饿汉式public class Singleton { //1.私有化构造器 private Singleton() {} //2.声明一个私有的实例对象 private static Singleton instance = new Singleton(); //3.提供一个公共静态的方法给外部调用,来使用内部的实例对象 private stat原创 2022-02-12 08:56:07 · 340 阅读 · 2 评论 -
包装类和基本数据类型的转换以及包装类的缓存设计
八大基本数据类型对应的包装类byte ----> Bytechar ----> Charactershort ----> Shortint ----> Integerlong ----> Longfloat ----> Floatdouble ----> Doble包装类—>基本数据类型拆箱(unboxing)以int为例:Integer integer = 1;//自动拆箱(auto-boxing)int num1 = inte原创 2022-02-11 22:22:22 · 226 阅读 · 1 评论 -
static关键字
static(静态的):可以修饰:属性、方法、代码块、内部类修饰属性:静态属性(类变量) VS 非静态属性(实例变量)实例变量:每创建一次对象,对象就会有一套独立的非静态属性类变量:无论创建多少次对象,对象们都共同拥有一个静态属性如果通过其中一个对象,去修改静态属性,其他对象去调用静态属性也是被修改过的(会被影响)其他说明:①静态变量随着类的加载而加载,可以通过"类.静态变量"的方式进行调用②静态变量的加载要早于对象的创建③类只会加载一次,则静态变量在内存中也只会存一份,存在方法区的静态原创 2022-02-11 08:55:55 · 150 阅读 · 0 评论 -
Object类以及中的toString方法和equals方法
Object类:1.Object是所有java类的根父类(盘古类)2.Object类只声明了一个空参构造器3.如果声明的类没有extends关键字取指明父类,默认父类为java.lang.Objet类4.对象被垃圾回收之前会调用finalize()方法,垃圾回收机制会自动的调用toString()的使用:1.当我们输出一个对象的引用时,实际上就是调用当前对象的toString() 返回的是地址值2.String、Date、File、包装类等都重写了Object类中的toString()方法原创 2022-02-10 22:34:24 · 158 阅读 · 0 评论 -
面向对象的三大特征之一多态性和instanceof关键字
多态:父类的引用指向子类的对象(向下转型)场景:有一个A子类 extends(继承)了父B类 (A类是子类 B类是父类)声明时: B b1 = new A(); 父类的引用b1 指向了 子类的对象 new A();此时,如果调用一个A子类中重写了B父类的方法 b1.方法名();实际执行的时A子类重写父类的方法(虚拟方法调用)此时,如果调用一个B父类中没有写过的方法(A子类特有的方法) 是不可以编译成功的!public class Person { public void speek(原创 2022-02-10 22:22:40 · 277 阅读 · 0 评论 -
this和面向对象的三大特征之一:继承以及super
this关键字:当前对象的或正在创建的对象可以用来修饰:属性、方法、构造器意义:为了解决属性名和形参名相同而产生的冲突又称为二义性this.属性、this.方法调用:调用的是当前对象中的行为和特征this调用构造器:①我们在类的构造器中,可以显示的使用 this(形参列表) 的方法 去调用本类的其他构造器②不可以调用自己③规定 this(形参列表) 必须声明在当前构造器的首行④构造器内部,最多只能声明一个 this(形参列表),来调用其他的构造器如果不调用,直接写this:那就是指当原创 2022-02-10 21:44:38 · 1286 阅读 · 0 评论 -
字段的介绍和分类以及成员变量的初始化值
字段(Field)分为成员变量和局部变量相同点:声明:数据类型 变量名 = 值;都是先声明后使用不同点:字段声明的位置权限修饰符是否有初始化值内存中加载的位置成员变量在类中方法外可以使用权限修饰符有初始化值加载到堆空间(非static的 )局部变量方法内、方法形参、代码块、构造器内部不可以使用无加载到栈空间中八大基本数据类型对应的初始化值:byte:0short:0int:0long:0float:0.0double:0.0cha原创 2022-02-10 21:00:43 · 470 阅读 · 0 评论 -
java的四大权限修饰符
权限修饰符从小到大排序:private、缺省(default)、protected、public修饰符 类内部 同一个包 不同包的子类 同一个工程修饰符类内部同一个包下的子类同一个包下的其他类不同包下的子类不同包下的其他类public√√√√√protected√√√√缺省√√√private√public:公共的,项目中任何地方都可以访问 (常用)protected:受保护的,在同包下和存在继承关原创 2022-02-10 20:46:09 · 427 阅读 · 0 评论 -
java中的JavaBean规范
JavaBean规范1.类是公共的2.属性都是private的3.有一个无参构造器(默认会提供,但一般手动写出)4.属性都有对应的setter和getter方法public class Person {//类是public修饰的 private String name;//属性都是private修饰的 private int age; //有无参构造器 public Person () { } //属性都有对应的setter和getter方法 public void setName(原创 2022-02-10 20:19:49 · 456 阅读 · 0 评论 -
Java的三大特征之一:封装
封装将相同的属性和方法抽出来装到一个模块中(类)隐藏具体的开发细节,把该隐藏的隐藏,该暴露的暴露封装的体现:将属性私有化(用private修饰),然后用公共(public)修饰的setter、getter方法去调用不对外暴露的方法即用private修饰的方法单例模式(构造器私有化)…等说明:封装的体现一定要用权限修饰符来体现去配合封装的好处:提高组件的重用性,即代码的利用率,哪个地方需要用到这个功能,那么直接调用就可以了提高安全性和降低传输失败的风险性,出了这个类,外部就不能直接通过类原创 2022-02-10 20:02:38 · 230 阅读 · 0 评论 -
类、对象和构造器的介绍
面向对象①面向过程:针对于我该如何去做②面向对象:针对于我该让谁来做类:将代码的相同状态和行为抽出,然后放入到一个模块中,这就是类相同的状态:属性相同的行为:方法声明:权限修饰符 class 类名 { }对象:是类的具体实例的描述声明:类名 对象名 = new 类名();//创建一个类对象//实例化一个类对象//new一个类对象因此同一类型的对象,都具备该同一类中的行为和特征构造器:创建对象需要调用类中的构造器方法(特有的方法)声明://无参构造器public原创 2022-02-10 19:45:01 · 270 阅读 · 0 评论 -
方法的定义和使用
方法的定义:把能完成特定功能的代码块装进一个方法中。为了节约代码量,也为了不重复写同样的代码,我们只需要调用此包装好的方法就可以实现我们想要的功能方法的声明:[权限修饰符] [static] 返回值类型 方法名 (参数列表) { //方法体;} 方法分为 有返回值 和 无返回值 、 有参数 和 无参数 两两组合类型都以public、非static修饰为例 有参 无参 有返回值 public int method ( int num1,int num2 ) {}原创 2022-02-10 14:16:49 · 282 阅读 · 1 评论 -
七、数组的介绍和使用
数组将多个同类型的值存储在一个组合中,称为数组。里面一个个值称为元素。一维数组声明://静态初始化的声明:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3};例如:String[] strArr = new String[]{"a","b","c","d"}; //动态初始化的声明:数据类型[] 数组名 = new 数据类型[长度];例如:int[] nums = new int[5];二维数组以及多维数组下面以二维数组为例:二维数组就是数组里面的原创 2022-02-10 09:48:21 · 207 阅读 · 0 评论 -
六、JVM内存模型
JVM内存划分,人为的根据不同内存空间的存储特点以及存储的数据来区分程序计数器:当前线程所执行的字节码的行号指示器本地方法栈:为虚拟机使用的native方法服务方法区:线程共享的内存区域,存储已被虚拟机加载的类信息、常量、静态变量即时编译器编译后的代码数据等(这个区域的内存回收目标主要是针对常量池的回收和对类型的卸载)虚拟机栈空间:每个方法被执行的时候都会同时创建一个栈帧用于存储该方法的局部变量、动态链接、方法出口等信息。(java方法执行时,就是在栈中执行)堆空间:被所有线程共享的一块内存区域.原创 2022-02-09 23:38:54 · 661 阅读 · 0 评论 -
五、选择语句和循环语句的使用
顺序结构java代码是从上自下 一行一行执行的,因此如果同时都是错误的代码,如果执行先上面一行代码的错误,下面一行的是不会被识别到的.选择结构基本语法:if(boolean表达式){ //执行语句}如果boolean表达式为true则进入里面的执行语句if(boolean表达式){ //执行语句1}else{ //执行语句2}如果boolean表达式为trur则进入执行语句1,为false进入执行语句2if(boolean表达式1){ //执行语句1}else if(bo原创 2022-02-09 20:55:59 · 282 阅读 · 0 评论 -
四、运算符的介绍和使用
运算符算术运算符赋值运算符比较运算符逻辑运算符三元运算符1.算术运算符( + - * / %)加减乘除以及取模运算(取余数)int a = 10;System.out.println(a%2);//结果是0自增运算和自建运算int a = 1;int b = 2;//++a;//先自增一再参与其他运算int c = b + (++a);//返回值:4//此时的a为2//a++;//先参与其他运算再自增一c = b + (a++);//返回值:4//此时的a也为2 但 后面继原创 2022-02-09 17:16:45 · 251 阅读 · 0 评论 -
三、变量的介绍和使用
一、变量变量的声明语法:数据类型 变量名 = 变量值;数据类型数据类型分为:基本基本数据类型和引用数据类型1、基本数据类型:(八大基本数据类型)1.byte:字节型 占8位。 默认值:02.char:字符型 占2字节 默认值:\u0000(null)但不是空格 就是啥都没有3.short:短整型 占2字节 默认值:04.int:整型 占4字节 (常用) 默认值:05.long:长整型 占8字节原创 2022-02-09 17:16:12 · 72 阅读 · 0 评论 -
二、标识符的命名规则和驼峰命名法
一、标识符的命名规则:(不遵循会出现编译报错)①由26字母、数字、$、_等自由组合②不能由数字开头、中间不能有空格③不能是关键字、保留字,但可以包含关键字和保留字④严格区分大小写二、驼峰命名法:(不遵循不会出现编译报错)为了能更好的阅读代码,提高代码的可读性而存在的首字母小写,后面每个单词出现的首字母都大写,其余小写...原创 2022-02-09 15:47:01 · 345 阅读 · 0 评论 -
一、JDK下载和安装以及环境配置
JDK下载网址:https://www.oracle.com/java/1.右上角有一个Download Java按钮 点击2.一般都用jdk8版本,下拉安装你所需要的系统对应的版本即可3.然后无脑下一步即可 但建议安装在系统盘外的盘中(可选项),且不要带中文的路径,路径中不包含空格字符4.避免电脑死机重装电脑的时候又要重新安装jdk(可能会发生)环境配置:1.右击我的电脑选择属性2.选择高级系统配置3.选择环境变量4.找到Path 双击5.将你安装的jdk路径 D:\java\jdk1原创 2022-02-09 14:41:37 · 1033 阅读 · 0 评论