Java学习
文章平均质量分 52
Java初步学习记录
一千零一夜丶
这个作者很懒,什么都没留下…
展开
-
认识java
自我学习总结原创 2023-10-23 23:09:20 · 28 阅读 · 0 评论 -
Java的开发环境
JDK由Java API,Java 运行环境(JRE)和一组建立,测试工具的Java的实用程序等组成 它的核心为Java API(其内部包含一些重要的语言结构及基本图形,网络和文件I/O等)。javadoc.exe:根据Java的源代码和注释语句生成Java程序的HTML格式的帮助文档。javac.exe:Java的编译器 将Java源代码文件转换为字节码文件。jar.exe:创建扩展名为.jar的压缩文档 与zip的压缩文件格式相同。java.exe:Java的解释器 执行Java程序中的字节码文件。原创 2023-10-23 23:09:51 · 40 阅读 · 0 评论 -
Java的语言基础
取反 结果为ture返回false 结果为ture返回false &&简洁与 前一个为ture自动执行下一个 前一个为false直接结束 即结果都为ture才返回ture ||简洁或 前一个为false 自动执行下一个 前一个为ture 直接结束 即两个都为false才返回false。4.赋值运算符:= += -= *= %= /= 所代表的意义为:如+= 为 a += b 和a = a + b是相同的。3.字符:'a','b','c' 注意:字符必须被' '括起来且有的字符可能具有相应的数值。原创 2023-10-24 03:30:00 · 31 阅读 · 0 评论 -
关于数组的认识
2.动态数组:模版为 数据类型[] 变量 = new 数据类型 ();在这里()内应该填的为需要的数组内数据个数。3.数组中的值都储存到了一个地址中 所以在数组中第一个数据对应的位置为0 也它的位置就是对应数组的长度减1。就是对数组中的几个位置中的数赋值……1.静态数组:模版为 数据类型[] 变量 ={数据1,数据2,数据3,;System.out.println("请输入第"+(i+1)+"个学生学号")……如 int[] a ={10,20,30,40,50};2.数组分为静态初始化数组和动态数组。原创 2023-10-23 23:12:56 · 30 阅读 · 0 评论 -
Java中的抽象类
父类知道每个子类都要做某个行为,但子类要做的情况不一样,父类就定义成抽象方法,交给子类去重写实现,我们设计这样的抽象类,就是为了更好的支持多态。1.在Java中有一个关键字叫:abstract,它就是抽象的意思,可以用它修饰类,成员方法。抽象类最主要的特点:抽象类不能创建对象,仅作为一种特殊的父类,让子类继承并实现。一个类继承抽象类,必须重写玩抽象类的全部抽象方法,否则这个类也必须定义为抽象类。抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类。类该有成员(成员变量,方法,构造器)抽象类都可以有。原创 2023-11-03 19:53:42 · 37 阅读 · 0 评论 -
关于Java继承
2.若是子父类中出现了重名的成员,会优先使用子类的,如果此时一定要在子类中使用父类成员可以通过super关键字,指定访问父类的成员:super.父类成员变量/父类成员方法。子类调用父类的构造器在默认情况下 子类的全部构造器的第一行代码都是 super() (写不写都有),它会调用父类的无参数构造器。注意:继承中由子类创建出来的对象可以访问子类和父类中非私有的成员,但由父类创建出来的对象只能够访问父类中非私有的成员。1.子类构造器的特点:子类的全部构造器,都会先调用父类的构造器,再执行自己。原创 2023-10-31 20:14:50 · 180 阅读 · 1 评论 -
关于Java中的泛型
2.作用:泛型提供了在编译阶段约束所能操作的数据类型,并自动进行检查的能力!1.定义类,接口,方法时,同时声明了一个或者多个类型变量(如:<E>),称为泛型类,泛型接口,泛型方法,它们统称为泛型。实现泛型接口,分为两种情况:第一种情况:子类清楚的知道 泛型参数的类型;1.泛型是工作在编译阶段的,一旦编译成class文件,class文件中就不存在泛型了,这就是泛型擦除。",可以在"使用泛型"的时候代表一切类型;E T K V是在定义泛型的时候使用。3.泛型的本质:把具体的数据类型作为参数传给类型变量。原创 2023-11-03 19:56:13 · 72 阅读 · 0 评论 -
关于static静态
拿方法时会执行方法内的输出指令 其中对于饿汉式单例每拿取一次方法时都会执行一次输出指令 但对于懒汉式单例每拿取一次方法都只有在第一次拿取时执行一次其中的输出指令。3.对于工具类 中使用类方法 不用实例方法 因为实例方法需要创建对象来调用 此时对象只是为了调用方法 对象占内存这样会浪费内存。注意:在使用类变量时如果下方无论以何种方式对类变量重新赋值都将导致该类变量的值改变 本质上他们使用的类变量是同一个。类变量:有static修饰,属于类,在计算机里只有一份,会被类的全部对象共享。原创 2023-10-27 21:32:25 · 133 阅读 · 1 评论 -
Java的接口
一个类我们说可以实现多个接口,同样,一个接口也可以被多个类实现的。一个类可以实现多个接口(接口可以理解成干爹),实现类实现多个接口,必须重写完全部接口的全部抽象方法,否则实现类需要定义成抽象类。4.使用接口可以解决单继承的问题,通过接口,我们可以让一个类有一个亲爹的同时,还可以找多个干爹去扩展自己的功能。一个类继承了父类,又同时实现了接口,父类中和接口中有同名的默认方法,实现类会优先使用父类的。一个类实现了多个接口,多个接口中存在同名的默认方法,可以不冲突,这个类重写该方法即可。(JDK9开始菜支持的)原创 2023-11-03 19:54:19 · 81 阅读 · 0 评论 -
Object类
注意:默认判断的是两个对象的地址。1.Object类是Java中所有类的祖宗类,因此,Java中所有类的对象都可以直接使用Object类中提供的一些方法。存在意义:让子类重写,以便返回子类对象的内容。浅克隆:拷贝出的新对象,与原对象中的数据一模一样(引用类型拷贝的只是地址)。对于两种方法toString没修改前输出的为对象的地址 修改后为对象的内容。equals没修改前比较的为两个对象的地址修改后比较的是内容。对象中还包含的其他对象,不会拷贝地址,会创建新对象。对象中的字符串数据拷贝的还是地址。原创 2023-11-09 23:46:03 · 34 阅读 · 1 评论 -
final和常量
程序编译后,常量会被"宏替换":出现常量的地方全部会被替换成其记住的字面量,这样可以保证使用常量和直接使用字面量的性能是一样的。修饰变量:该变量只能被赋值一次(变量:一:局部变量 二:成员变量 1.静态成员变量 2.实例成员变量)final修饰引用类型的变量,变量储存的地址不能被改变,但地址所指向对象的内容是可以被改变的。final 关键字是最终的意思,可以修饰(类,方法,变量)final修饰基本类型的变量,变量储存的数据不能被改变。修饰方法:该方法被称为最终方法,特点是不能被重写了。原创 2023-10-31 20:16:54 · 79 阅读 · 1 评论 -
对ATM项目开发的尝试
【代码】对ATM项目开发的尝试。原创 2023-10-27 21:30:49 · 209 阅读 · 1 评论 -
Java的常见几种案例
八:打印乘法表与三角形。原创 2023-10-23 23:17:23 · 102 阅读 · 0 评论 -
关于面向对象
1.面向对象就是开发一个一个的对象,再把数据交给对象 使对象具有属性,再调用类中定义的方法来完成对数据的处理 也就是赋予对象行为。1.this就是一个变量可以用在方法中来拿到当前对象 哪个对象调用方法 this就指向哪个对象 也就是拿到哪个对象。1.封装极速用类设计对象处理某一个事物的数据是应该把要处理的数据以及处理这些数据的方法设计到一个对象中去。类中定义的变量称为成员变量也就是对象的属性 类中定义的方法也称为成员方法也就是对象的行为。3.class也就是类也称为对象的设计图或者对象的模版。原创 2023-10-23 23:15:20 · 35 阅读 · 0 评论 -
Java的流程控制
表达式}while(条件表达式);表达式} 比如 int a = 8 whlie(a<=10){System.out.println("你好");注意对于随机数的截止值若输入33 则其得到的随机数范围为0-32 所以若要1-33则需要对其加1 比如int b = a.nextInt(33)+1;或者if(表达式1){输出语句}else if(表达式2){输出语句}else if(表达式3){输出语句}……else{输出语句}1.if条件语句:使用时的模版 if(表达式){输出语句}else{输出语句};原创 2023-10-23 23:11:48 · 23 阅读 · 0 评论 -
对于方法的总结
1.方法的重载是指需要多个方法的名称一样 但是形参的列表不一样如:类型 数量 以及顺序的不同 才能算在方法重载 不关心形参的名称。4.一个方法创建好后如果不调用 方法也不会产生任何影响 若要调用 则实参和形参之间的数据类型应该严格相同。再无返回值的方法中用于立刻跳出并结束此段方法 在需要返回值的方法值中用于返回数据。1.值传递:在将传输实参给方法中形参时本质上传递的是实参变量中储存的值的副本。3.方法在执行时必须要调用 调用的方法为: 方法名(....);基本类型的参数传递:传输的是基本的数据值。原创 2023-10-23 23:13:57 · 44 阅读 · 0 评论 -
常用API
也可以调用相应的增删改查数据的方法。Sting是不可变字符串对象:每次试图改变字符串对象实际上是新产生了新的字符串对象了 变量每次都是指向了新的字符串对象 之前的字符串对象的内容确实是没有改变的 因此说String的对象是不变的。5.如果当前程序中 要调用Java提供的程序 也需要先导包才可以使用 但Java.lang包下的程序是不需要我们导包的 可以直接使用。方法四:细致比较字符串是否相同 相同返回true 不同返回false 不能用==来进行比较因为它比较的会是储存字符串的地址是否相同。原创 2023-10-23 23:16:02 · 24 阅读 · 0 评论 -
Java的内部类
注意:和前面学习过的实例方法一样,成员内部类的实例方法中,同样可以直接访问外部类的实例成员,静态成员。1.内部类是类中的五大成分之一(成员变量,方法,构造器,内部类,代码块),如果一个类定义在另一个类内部,这个类就是内部类。2.场景当一个类的内部,包含了一个完整的事物,且这个类没有必要单独设计时,就可以把这个事物设计成内部类。注意:静态内部类可以访问外部类的静态成员,不可以直接访问外部类的实例成员。其余和成员内部类相同。1.成员内部类:就是类中的一个普通成员,类似前面我们学过的普通的成员变量,成员方法。原创 2023-11-03 19:54:59 · 34 阅读 · 0 评论 -
关于Java多态
因此在强转前,Java建议:使用instanceof关键字,判断当前对象的真实类型,再进行强转。4.多态的一个注意事项:多态是对象,行为的多态,Java中的属性(成员变量)不谈多态。定义方法时,使用父类类型的形参,可以接受一切子类对象,扩展性更强,更便利。5.多态的好处:在多态形式下,右边对象是可以解耦合的,更便于扩展和维护。1.多态是在继承/实现情况下的一种现象,表现为:对象多态,行为多态。对于多态利用的例子:进行强转后,便可以使用子类独有的方法。2.多态的具体代码体现:下面为对象的多态。原创 2023-10-31 20:15:59 · 42 阅读 · 1 评论 -
关于包装类
如:Integer a1 = Integer.valueOf(19);基本类型数据包装成对象的方案一般使用valueOf()来进行。自动拆箱:自动把包装类型的对象转化为基本数据类型。一:包装类就是把基本类型的数据包装成对象。自动装箱:自动把基本数据类型转化为对象。原创 2023-11-09 23:47:16 · 29 阅读 · 0 评论 -
Java中的枚举
编译器为枚举类新增了几个方法,并且枚举类都是继承:java.lang.Enum类的,从enum类也会继承到一些方法。枚举类的第一行只能罗列一些名称,这些名称都是常量,并且每个常量记住的都是枚举类的一个对象。枚举类的构造器都是私有的(写不写都只能是私有的),因此,枚举类对外不能创建对象。注意:枚举类中的第一行,只能写一些合法的标识符(名称),多个名称用逗号隔开。这些名称,本质是常量,每个常量都会记住枚举类的一个对象。枚举类中,从第二行开始,可以定义类的其他各种成员。枚举类都是最终类,不可以被继承。原创 2023-11-03 19:55:33 · 67 阅读 · 0 评论 -
Objects类
1.equals(Object a,Object b) 先做非空判断,在比较两个对象 ,提高了安全性。注意:因为使用 == 来判断对象是否相等时若有一个对象为null则最终输出结果会报错。3.nonNull(Object obj) 判断对象是否不为null,不为null返回true,反之为false。2.isNull(Object obj) 判断对象是否为null,为null返回true,反之为false。一:Objects类是一个工具类,提供了很多操作对象的静态方法给我们使用。原创 2023-11-09 23:46:36 · 28 阅读 · 0 评论 -
关于Java新增时间
minusYears,minusSeconds,minusMonths,minusWeeks,minusHours,minusMinutes,minusNanos,minusSeconds 把某个信息减多少,返回新日期时间对象。getYear,getMonthValue,getDayOfYear,getDayOfMonth,getDayOfWeek,getHour,getSecond,getMinute,getNano 获取年月日,时分秒,纳秒等。原创 2023-11-10 04:15:00 · 91 阅读 · 0 评论 -
关于Java中的异常
1.Java无法为这个世界上全部的问题都提供异常类来代表,如果企业自己的某种问题,想通过异常来表示,以便用异常来管理该问题,那就需要自己来定义异常类了。方式:try{// 监视可能出现异常的代码}catch(异常类型1 变量){// 处理异常}catch(异常类型2 变量){// 处理异常}.....Exception:交异常,它代表的才是我们程序可能出现的问题,所以,我们程序员通常会用Exception以及它的孩子来封装程序出现的问题。方式:方法 throws 异常1,异常2,异常3……原创 2023-11-13 22:53:47 · 34 阅读 · 0 评论 -
BigDecimal类
divide(另一个BigDceimal对象,精确几位,舍入模式) 除法,可以控制精确到小数几位。valueOf(double val) 转换一个double成 BigDceimal。doubleValue() 将BigDceimal转换为double。subtract(BigDceimal b) 减法。multiple(BigDceimal b) 乘法。divide(BigDceimal b) 除法。add(BigDceimal b) 加法。用于解决浮点型运算时,出现的失真的问题。原创 2023-11-09 23:52:21 · 35 阅读 · 0 评论 -
Map系列的遍历方式与Map系列集合及集合的嵌套
如果键存储的是自定义类型的对象,也可以通过重写HashCode和equals方法,也可以保证多个对象内容一样时,LinkedHashMa集合就能认为是重复的。·如果键存储的是自定义类型的对象,可以通过重写HashCode和equals方法,这样可以保证多个对象内容一样时,HashMa集合就能认为是重复的。实际上:原来学的Set系列集合的底层就是基于Map实现的,只是Set集合中的元素只要键数据,不要值数据而已。2.原理:TreeMap跟TreeSet集合的底层原理是一样的,都是基于红黑树实现的排序。原创 2023-11-17 18:50:09 · 654 阅读 · 0 评论 -
System类
2.currentTimeMillis() 返回当前系统的时间毫秒值形式。返回的是long类型的世界毫秒值:指的是从1970-1-1 0:0:0 开始走到此刻的总的毫秒值,1s = 1000ms。1.exit(int status) 终止当前运行的Java虚拟机。该参数用作状态代码;按照惯例,非零状态代码表示异常终止。System代表程序所在的系统,也是一个工具类。二:System类提供的常见方法。原创 2023-11-09 23:49:09 · 27 阅读 · 0 评论 -
Set系列集合
修改前的结果:[Student{name='蔡建宇', high=160}, Student{name='王凯', high=168},Student{name='王凯', high=168}, Student{name='盛卓', high=172}]修改后的结果:[Student{name='蔡建宇', high=160}, Student{name='盛卓', high=172}, Student{name='王凯', high=168}]一:特点:无序:添加数据的顺序和获取出的数据顺序不一致;原创 2023-11-15 13:05:37 · 35 阅读 · 0 评论 -
关于Java中的算法
1.public String replaceAll(String regex , String newStr) 按照正则表达式匹配的内容进行替换。2.public String[] split(String regex) 按照正则表达式匹配的内容进行分割字符串,返回一个字符串数组。2.核心思想:每次排除一半的数据,查询数据的性能明显提高极多!1.前提条件:数组中的数据必须是有序的。确定总共需要选择几轮:数组的长度-1。确定总共需要做几轮:数组的长度-1。每轮比较次数:数组的长度-1-i。原创 2023-11-10 05:00:00 · 48 阅读 · 0 评论 -
传统时间和新增时间的区别
2.都是不可变对象,修改后会返回新的时间对象,不会丢失最开始的时间。2.都是可变对象,修改后会丢失最开始的时间信息。1.设计不合理,使用不方便,很多都被淘汰了。1.设计合理,功能丰富,使用更方便。tip:1秒 = 10的九次方纳秒。1毫秒 = 1000微秒。1微秒 = 1000纳秒。1秒 = 1000毫秒。4.只能精确到毫秒。原创 2023-11-10 04:00:00 · 108 阅读 · 0 评论 -
Collection集合的总结与可变参数
2.由于增强for循环遍历集合就是迭代器遍历集合的简化写法,因此,使用增强for循环遍历集合,又同时删除集合中的数据时,程序也会出现并发修改异常的错误。一:就是一种特殊形参,定义在方法,构造器的形参列表里,格式是:数据类型...参数名称;1.使用迭代器遍历集合时,又同时在删除集合中的数据,程序就会出现并发修改异常的错误。1.希望记住元素的添加顺序,需要存储重复的元素,又要频繁的根据索引查询数据推荐使用。HashSet集合(无序,不重复,无索引),底层基于哈希表实现的。:一个形参列表中,只能有一个可变参数。原创 2023-11-17 18:42:02 · 57 阅读 · 0 评论 -
Math类
Math代表数学,是有一个工具类,里面提供的都是对数据的=进行操作的一些静态方法。7.random() 返回值为double的随机值,范围[0.0,1.0)。6.pow(double a, double b) 返回a的b次幂的值。5.max(int a, int b) 获取两个int中的较大值。min(int a, int b) 获取两个int中的较小值。3.floor(double a) 向下取整。2.ceil(double a) 向上取整。1.abs(int a) 获取参数绝对值。原创 2023-11-09 23:48:31 · 31 阅读 · 0 评论 -
Collections工具类与Map集合
--------------------------------------------------------------------------------------------------------------------------------Map集合。3.Map集合的所有键是不允许重复的,但值可以重复,键和值是一一对应的,每一个键都只能找到自己对应的值。1.先学习Map的常用方法是因为Map是双列集合的祖宗,它的功能是全部双列集合都可以继承过来使用的。对List集合中的元素进行升序排序。原创 2023-11-17 18:45:20 · 33 阅读 · 0 评论 -
String类型的延伸
StringJoiner(间隔符号,开始符号,结束符号) 创建一个StringJoiner对象,指定拼接时的间隔符号,开始符号,结束符号。1.JDK8开始才有的,与StringBuilder一样,也是用来操作字符串的,也可以看成是一种容器,创建后里面的内容是可变的。1.StringBuilder代表可变字符串对象,相当于一个容器,它里面装的字符是可以改变的,就是用来操作字符串的。1.对于字符串相关的操作,如频繁的拼接,修改等,建议使用StingBuilder效率更高。原创 2023-11-09 23:48:00 · 28 阅读 · 0 评论 -
Java中的方法引用
2.使用场景:如果某个Lambda表达式里只是调用一个实例方法,并且前面参数列表中的第一个参数是作为方法的主调,后面的所有参数都是作为该实例方法的入参的,则此时就可以使用特定类型的方法引用。2.使用场景:如果某个Lambda 表达式里只是调用一个静态方法,并且前后参数的形式一致,就可以使用静态方法引用。2.使用场景:如果某个Lambda表达式里只是调用一个实例方法,并且前后参数的形式一致,就可以使用实例方法引用。1.方式:对象名::实例方法。1.方式:对象名::实例方法。1.方式:类型::方法。原创 2023-11-09 23:57:26 · 87 阅读 · 0 评论 -
List系列集合
List集合因为支持索引,所以多了很多与索引相关的方法,当然,Collection的功能List也都继承了。2.链表中的结点是独立的对象,在内存中是不连续的,每个结点包含数据值和下一个结点的地址。双链表的特点:查询慢,增删相对较快,但对首尾元素进行增删改查的速度是极快的。:利用无参构造器创建的集合,会在底层创建一个默认长度为0的数组。:添加一个元素时,底层会创建一个新的长度为10的数。删除指定索引处的元素,返回被删除的元素。修改指定索引处的元素,返回被修改的元素。:数据量大的同时,又要频繁的进行增删操作!原创 2023-11-15 13:01:18 · 178 阅读 · 0 评论 -
Runtime类
1.Rntime.getRuntime() 返回与当前Java应用程序关联的运行时对象。6.exec(String command) 启动某个程序,并返回代表该程序的对象。3.avaiProcessors() 返回Java虚拟机可用的处理器数。4.totalMemory() 返回Java虚拟机中的内存总量。5.freeMemory() 返回Java虚拟机中的可用内存。2.exit(int status) 终止当前运行的虚拟机。二:Runtime类提供的常见方法。1.代表程序所在的运行环境。原创 2023-11-09 23:50:45 · 23 阅读 · 0 评论 -
关于Java传统时间
SimpleDateFormate(String pattern) 创建简单日期格式化对象,并封装时间的格式。1.代表的是系统此刻时间对应的日历,通过它可以单独获取,修改时间中的年,月,日,时,分,秒等。setTime(long time) 设置日期对象的时间为当前时间毫秒值对应的时间。1.代表简单日期格式化,可以用来把日期对象,世界毫秒值格式化成我们想要的对象。formate(Date date) 将日期格式化成日期/时间字符串。Date() 创建一个Date对象,代表的是系统当前时刻的日期时间。原创 2023-11-09 23:53:45 · 32 阅读 · 0 评论 -
Java的集合框架
Collection是单列集合的祖宗,它规定的方法(功能)是全部单列集合都会继承的。把一个集合中的数据全部倾倒入另一个集合中 两个集合的数据类型应该相同。1.Collection:单列集合,每个元素(数据)只包含一个值。ArrayList,LinekdList:有序,可重复,有索引。·List系列集合:添加的元素是有序,可重复,有索引。·Set系列集合:添加的元素是无序,不重复,无索引。:按照大小默认升序排序,不重复,无索引。判断集合中是否包含某个元素。无序,不重复,无索引。有序,不重复,无索引。原创 2023-11-13 22:58:28 · 37 阅读 · 0 评论 -
Stream
2.优势:Stream流大量的结合了Lambda的语法风格来编程,提供了一种更加强大,更加简单的方式操作集合或者数组中的数据,代码更简洁,可读性更好。1.Stream也叫Stream流,是JDK8开始新增的一套API(java.util.stream.*),可以用用于操作集合或者数组的数据。收集Stream流:就是把Stream流操作后的结果转回到集合或者数组中去返回。1.终结方法指的是调用完成后,不会返回新的Stream了,没法继续使用流了。把流处理后的结果收集到一个指定的集合中去。原创 2023-11-17 18:56:50 · 37 阅读 · 0 评论