![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java基础
文章平均质量分 63
java语言的学习
java塑造中...
自学java的男孩,转go了。。。
展开
-
java8新特性
目录一、Lambda表达式java内置的四大核心函数式接口构造器引用数组引用Function中的Rapply(T t)方法引用的使用:二、StreamAPI创建Stream方式一:通过集合创建Stream方式二:通过数组一些常用方法:筛选与切片映射排序Stream的终止操作匹配与查找归约收集Optional类(没写啥)一、Lambda表达式 1.举例:(o1,o2) -> Integer.compare(o1,.原创 2022-02-25 22:45:45 · 523 阅读 · 0 评论 -
java中的反射机制
一、了解类加载器public class ClassLoaderTest { @Test public void test1(){// 对于自定义类,使用系统类加载器进行加载 ClassLoader classLoader = ClassLoaderTest.class.getClassLoader(); System.out.println(classLoader);// 调用系统类加载器的getParent(),获取扩展类原创 2022-02-22 18:09:02 · 84 阅读 · 0 评论 -
网络编程(初步认识TCP、UDP、URL)
目录一、网络编程中有两个主要的问题:二、网络编程中的两个要素:三、通信要素一:IP和端口号四、实现TCP网络编程例子1:客户端发送信息到服务端,服务端将信息展示在控制台上。例题2:客户端发送文件给服务端,服务端将文件保存在本地。例题3:从客户端发送文件给服务端,服务端保存到本地。并返回发送成功给客户端。并关闭相应的连接。五、UDP协议的网络编程六、URL:统一资源定位符一、网络编程中有两个主要的问题:1.如何准确地定位网络上一台或多台主机;定位主机上的特定.原创 2022-02-17 17:40:34 · 1703 阅读 · 0 评论 -
IO流(常用流都有)
目录一、流的分类:二、流的体系结构三、FileReader和FileWriter四、FileInputStream和FileOutputStream五、BufferedInputStream和BufferedOutputStream(BufferedReader和Bufferedwriter)六、InputStreamReader和OutputStreamWriter八、PrintStream 和PrintWriter九、DataInputStream 和 DataOutp原创 2022-02-14 21:45:36 · 927 阅读 · 0 评论 -
IO流(File类介绍)
一、FiLe类的使用1. File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹)2. File类声明在java.io包下3. File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法, 并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用Io流来完成。4.说明: IDEA中: 如果使用单元测试方法测试,相对路径即为当前Module下. 如果使用main()测试,相对路径即为当前的Project下。 Eclipse中: 不管使原创 2022-02-14 21:20:32 · 328 阅读 · 0 评论 -
java中的泛型
目录一、泛型在集合中的使用:二、泛型出现的意义泛型出现以前的代码泛型出现之后的代码三、泛型在继承方面的特点四、通配符的使用: ?一、泛型在集合中的使用: ① 集合接口或集合类在jdk5.0时都修改为带泛型的结构。 ② 在实例化泛型类时,可以指明具体的泛型类型 ③ 指明完以后,在集合类或接口中凡是定义类或接口时,内部结构(比如:方法、构造器、属性等)使用到类的泛型的位置,都指定为实例化的泛型类型。 比如:add(E e) --->实例化以后:add(...原创 2022-01-25 16:55:51 · 52 阅读 · 0 评论 -
collections工具类(五)
collections:操作Collection、Map的工具类排序操作:(均为static方法)>reverse(List):反转List中元素的顺序>shuffle(List):对List集合元素进行随机排序sort(List):根据元素的自然顺序对指定IList集合元素按升序排序sort(List, Comparator):根据指定的Comparator 产生的顺序对List集合元素进行排序swap(List,int, int):将指定list集合中的i处元素和j处元素进行原创 2022-01-24 15:48:37 · 51 阅读 · 0 评论 -
java中的Map接口(四)
一、框架 /----Map接口:双列集合,用来存储一对一对的数据。(key、value)(函数) /----HashMap:作为Map的主要实现类;线程不安全的,效率高;存储nuLl的key和value /----LinkedHashMap:在原有的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个元素.从而保证在遍历map元素时,可以按照添加的顺序实现遍历。对于频繁的遍历操作,效率更高。 /----TreeMap:保证按照添加的key-val原创 2022-01-24 15:46:17 · 529 阅读 · 0 评论 -
集合中的set(三)
目录一、框架二、set中自己定义的方法三、set:存储无序的、不可重复的数据以HashSet为例说明:四、添加元素的过程:以Hashset为例:(底层逻辑)五、LinkedHashSet的使用六、TreeSet的使用一、框架/----Collection接口:单列集合,用来存储的一个一个的对象 /----Set接口:存储的无序的,不可重复的数据(类似于高中的集合) /----HashSet : 作为set接口的主要实现类,线程不安..原创 2022-01-24 15:20:29 · 274 阅读 · 0 评论 -
集合中的List(二)
一、List框架/----Collection接口:单列集合,用来存储的一个一个的对象 /----List接口:存储有序的,可重复的数据(动态数组) 用来替换原有的数组 /----ArrayList:作为List接口的主要实现类,线程是不安全的,效率高,底层使用Object[] elementDate存储 /----LinkedList:对于频繁的插入、删除操作,效率比ArrayList要高,底层使用的是双向链表 /----Vector:作原创 2022-01-24 15:11:24 · 61 阅读 · 0 评论 -
集合Collection、遍历集合元素的方法(一)
一、集合框架的概述1.集合、数组都是对多个数据进行存储操作的结构,简称java容器 说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt .jpg .avi 数据库中)2.1 数组在存储多个数据方面的特点: >—旦初始化以后,其长度就确定了。 >数组一旦定义好,其元素的类型也就确定了。我们也就只能操作指定类型的数据了。比如: String[] arr;int[] arr1;2.2 数组在存储多个数据方面的缺点: >—旦原创 2022-01-24 15:07:14 · 481 阅读 · 0 评论 -
java中注解的使用(待补充)
这个先记录,以后用到的时候再回来细看注解的使用* 1.理解Annotation* ①jdk5.0新增* ②Annotation其实就是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。* 通过使用Annotation,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。* ③在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。在JavaEE/Android中注解占* 据了更重要的角色,例如用来配置应用程序的任何切面,代替Jav.原创 2022-01-24 14:55:33 · 71 阅读 · 0 评论 -
java中的枚举类设置,enum
目录一、枚举类的使用二、如何定义枚举类1.jdk5以前自己造三、Enum类中常用方法四、枚举类实现接口一、枚举类的使用 1.枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类 2.当需要定义一组常量时,强烈建议使用枚举类 3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式二、如何定义枚举类1.jdk5以前自己造public class SeasonTest { public static void main(String[] ..原创 2022-01-15 14:31:31 · 3341 阅读 · 0 评论 -
java中的比较 Comparable\Comparator
/** * 一、说明:正常情况下,java中的对象只能比较== != ,不能使用< , >,但在开发场景中,我们需要对多个对象进行排序 * 就需要,比较对象的大小。 * 如何实现:使用两个接口中的一个:Comparable 或 Comparator * <p> * * 二、ComparabLe接口与Comparator的使用的对比: * Comparable接口的方式一旦确定,保证Comparable接口实现类的对象在任何位置都可以比较大小 * comparat..原创 2022-01-10 20:39:37 · 155 阅读 · 0 评论 -
jdk8之后关于日期和时间的API
一、Instant@Test public void test2(){// now()获取本初子午线的时间 Instant now = Instant.now(); System.out.println(now);//2022-01-09T09:51:02.487524200Z// 添加时间偏移量 OffsetDateTime offsetDateTime = now.atOffset(ZoneOffset.ofHo原创 2022-01-10 20:35:15 · 280 阅读 · 0 评论 -
jdk8之前关于日期和时间的API
目录一、System类中的currentTimeMillis()二、java.util.Date类(父类)---java.sql.Date类(子类)三、simpleDateFormat的使用:simpleDateFormat对日期Date类的格式化四、Calendar日历类(抽象类)的使用一、System类中的currentTimeMillis()返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差,称为时间戳@Test public void ...原创 2022-01-10 20:25:19 · 325 阅读 · 0 评论 -
String、StringBuffer、StringBuilder中的使用方法
一、String1.复习String与基本数据类型、包装类之间的转换String ---> 基本数据类型、包装类:parseXxx(Str)基本数据类型、包装类 ---> String:valueOf()@Test public void test1() { String s1 = "123";// 存放在方法区中 //String————>int int i = Integer.parseInt(s1);原创 2022-01-08 13:26:22 · 269 阅读 · 0 评论 -
线程安全的解决方法、线程之间的通信(生产者和消费者的经典例题)
目录解决线程安全的方式一:同步代码块解决线程安全的方式二:同步方法总结:使用同步机制将单例模式中的懒汉式改为线程安全的解决线程安全的方式三:Lock锁线程通信的例子:使用两个线程打印1-100。线程1,线程2交替打印线程通信的应用:经典例题:生产者和消费者的问题一、解决线程安全的方式一:同步代码块synchronized(同步监视器){ //需要被同步的代码 }说明:1.操作共享数据的代码即为需要被同步的代码 2.共享数据:多个线程共.原创 2022-01-05 00:27:19 · 2146 阅读 · 0 评论 -
多线程的四种创建方式
程序、线程、进程程序:一段静态的代码 进程:正在运行的一段程序 线程:进程可以细化为线程,是程序内部的一条执行路径方式一:继承Thread类的方式步骤: 创建一个继承于Thread类的子类 重写run()方法--->将这个线程要做的事情写在方法体中 创建子类的对象 通过该对象调用start()//遍历100以内的偶数class MyThread extends Thread { @Override// 另一个线程的执行 public void r原创 2022-01-05 00:06:03 · 300 阅读 · 0 评论 -
java中的异常及处理
一、异常的体系结构1、java.lang.Error Java虚拟机无法解决的严重问题。 如:JVM系统内部错误、资源毛尽等严重情况。 比如:StackOverflowError和OOM。。 这种的一般不编写针对性的代码进行处理举例:public class ErrorTest { public static void main(String[] args) { // 1.栈溢出:java.lang.StackOverflowError main(args)...原创 2021-12-25 10:11:24 · 463 阅读 · 0 评论 -
类的内部成员之五:内部类
1.java中允许将一个类A声明在另一个类B中,那么A就是内部类,类B就是外部类 2.内部类的分类:成员内部类(静态的、非静态的)局部内部类(方法内、代码块内、构造器内)3.成员内部类:一方面,作为外部类的成员: >调用外部类的结构 >可以被static修饰 >可以被4种不同的权限修饰 另一方面,作为一个类: >类内可以定义属性、方法、构造器等 >可以被f...原创 2021-12-16 21:19:00 · 487 阅读 · 0 评论 -
Java中的接口
1.接口使用interface来定义 2.Java中,接口和类是并列的两个结构 3.如何定义接口:定义接口中的成员 3.1JDK7及以前:只能定义全局常量和抽象方法 >全局常量:public static final的,但是书写时可以省略 >抽象方法:public abstract的,但是书写时可以省略 3.2 JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法(略) 4.接口不能定义构...原创 2021-12-16 21:12:29 · 222 阅读 · 0 评论 -
小小的一个模版(一个抽象的类,一个完整的流程写在一个方法中,其中不确定的那一部分写在抽象方法中, 然后写子类继承这个抽象的类,子类中重写父类的抽象方法。)
测试时:main函数实例化父类的对象也行,实例化子类的对象也行,(我这里多态了子类的对象)反正都能执行的是父类的方法,则模版完成public class TemplateTest { public static void main(String[] args) { Template t = new SubTemplate(); t.spendTime(); }}abstract class Template { public void spendTime() { // 计算.原创 2021-12-16 21:10:42 · 68 阅读 · 0 评论 -
abstract关键字、匿名类或匿名对象调用方法
目录一、认识 1.abstract:抽象的 2.abstract可以修饰的结构:类、方法 3.abstract修饰类:抽象类 4.abstract修饰方法:抽象方法二、abstract使用上的注意点:三、调用方法时的匿名调用方法一、认识 1.abstract:抽象的 2.abstract可以修饰的结构:类、方法 3.abstract修饰类:抽象类 >抽象类不能实例化,但是依然会有构造器,因为子类的构造器会继承父...原创 2021-12-16 21:06:51 · 334 阅读 · 0 评论 -
代码块、赋值的优先级、final关键字
目录一、代码块一、认识二、静态代码块三、非静态代码块四、代码展示二、代码中赋值顺序优先级三、final关键字一、代码块一、认识1.代码块的作用:用来初始化类、对象 2.代码块如果有修饰的话只能是static 3.分类:静态代码块 vs 非静态代码块二、静态代码块 ①内部可以有输出语句 ②随着类的加载而执行,而且只执行一次 ③初始化类的信息 ④如果一个类...原创 2021-12-16 20:59:20 · 174 阅读 · 0 评论 -
static关键字、单例模式中的饿汉式、懒汉式展示
一、 static关键字的使用1.static:静态的 2.static可以用来修饰属性、方法、代码块、内部类3.使用static修饰属性:静态变量3.1 属性:按是否使用static修饰,分为 静态变量(类变量) vs 非静态变量(实例变量) 静态变量:我们创建了类的多个对象,多个对象共享同一个静态变量。当通过某一个对象修改静态变量时,会导致 其他对象调用此静态变量时,是修改过了的。 实例变量:我们创建了类的多个对象,每个对象都独立的拥有一...原创 2021-12-05 23:21:51 · 686 阅读 · 3 评论 -
Junit单元测试和包装类(我有问题解决不了,希望得到帮忙)
目录一、Java中的JUnit单元测试一切都正常,但是我的问题在这里出现了二、包装类的使用:同样的地方同样的错误,但是照这种操作一般是没啥问题的三、错误点明:我导入了junit4的包,也导过junit5的包,按理说没问题,,额,反正就是飘红哈哈搞了两天,没找到合适的解决办法,但不影响我学习,我还要继续往后了,但是放心我会回来解决的一、Java中的JUnit单元测试 步骤: 1.选中当前工程、右键点击后选择build path 然后选add libraries...原创 2021-12-05 23:12:20 · 399 阅读 · 0 评论 -
便于回头看的小案例
这个只是为了让自己熟悉思维,我前后捋了四边才捋清楚,还是记录下来吧!package com.haiyu.project.bean;/** * @Description Customer为实体对象,用来封装客户信息 * @author 17391 * */public class Customer { private String name; private char gender; private int age; private String phone; p...原创 2021-12-02 17:35:02 · 80 阅读 · 0 评论 -
== 和 equals()方法的区别、toString()方法的使用
一、== 和 equals()方法的区别一、回顾 == 的使用:1.==是一个运算符2.可以使用在基本数据类型的变量和引用数据类型的变量中3.如果比较的是基本数据类型的变量,比较的是两个变量保存的数据是否相等(不一定要数据类型相等)如果比较的是引用数据类型的变量,比较的是两个变量保存的地址值是否相同,即两个对象的引用是否指向同一个对象实体补充:使用==时必须让两边的变量类型可以统一,否则编译不通过二、equlas()方法的使用:1.equals()是一个方法,而非一个...原创 2021-12-02 17:30:16 · 501 阅读 · 0 评论 -
面向对象(五)多态性
一、引入1.理解多态性:可以理解为一个事物的多种形态。2.何为多态性: 对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)3.多态的使用:虚拟方法调用 有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法, 但在运行期,我们实际执行的是子类重写父类的方法 总结:编译,看左边;运行,看右边。4.多态性的使用前提: ① 类的继承关系 ② 方法的重写5.对象的多态性只适用于方法不适用于属性(属性的编译...原创 2021-12-02 17:22:16 · 124 阅读 · 0 评论 -
面向对象(四)继承性
extends:延展、扩展、继承一、继承性的好处* ① 减少了代码的冗余,提高了代码的复用性* ② 便于功能的扩展* ③ 为之后的多态性的使用提供了前提* 二、继承性的格式: class A extends B{}* A:子类、派生类、subclass* B:父类、基类、superclass** 2.1体现:一旦子类A继承父类B以后,子类A中就获取了父类B中声明的所有的属性和方法(包括private的)*...原创 2021-12-02 17:17:05 · 126 阅读 · 0 评论 -
面向对象(三)封装性
目录一、引入:二、构造器三、属性赋值的先后顺序四、this关键字五、package关键字六、import关键字一、引入:1.我们程序设计追求“高内聚,低耦合”。>高内聚:类的内部数据操作细节自己完成,不允许外部干浙>低耦合:仅对外暴露少量的方法用于使用。2.封装性的体现:我们将类的属性私有化(private)的同时,会阻断我们对其的设置和获取;所以我们要提供公共的(public)方法来获取(getXxx)和设置(setXxx)的方法。get...原创 2021-12-02 17:08:30 · 425 阅读 · 0 评论 -
面向对象(二)练习篇之对象数组问题
第一题:利用面向对象的编程方法,设计类Circle计算圆的面积。main函数public class CircleText {public static void main(String[] args) {//实例化类 Circle1 c1 = new Circle1();//定义属性 c1.r1 = 3;//调用类1来计算圆的面积 double mianJi = c1.findArea1(); System.out.println(mianJi);//有返回值,新定义一个变.原创 2021-11-16 19:59:34 · 1389 阅读 · 1 评论 -
面向对象(一)认识思想
package com.haiyu.exer;/*对象数组题目:定义类Student,包含三个属性:学号number(int),年级state(int),成绩score(int)。创建20个学生对象,学号为1到20,年级和成绩都由随机数确定。间题一:打印出3年级(state值为3)的学生信息。问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息提示:1)生成随机数:Math.random(),返回值类型double;2)四舍五入取整:Math.round(double d),返回值类.原创 2021-11-14 16:36:21 · 86 阅读 · 0 评论 -
数组例题中学习 随机赋值怎么能避免重复,打印杨辉三角,二分法查找,冒泡法
目录问题一:定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,和值,要求:所有随机数都是两位数.问题二: 数组的复制和数组地址值的赋值问题三: 面试题目: 创建一个长度为6的int型数组,要求取值为1-30,同时元素值各不相同。随机赋值怎么能避免重复问题四: 使用二维数组打印一个10行杨辉三角。数组内外层元素的初始化值算法的考查:数组的复制、反转、查找(线性查找、二分法查找)问题一:定义一个int型的一维数组,包含...原创 2021-11-08 21:40:37 · 133 阅读 · 0 评论 -
数组的使用,以及栈和堆的初步认识
目录数组1、数组的理解:2、数组相关的概念:3、数组的特点:4、数组的分类:5一维数组的使用:① 一维数组的声明和初始化② 如何调用数组的指定位置元素③ 如何获取数组的长度④ 如何遍历数组元素⑤ 数组元素的默认初始化值认识栈和堆栈堆栈和堆的联系数组1、数组的理解:数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,*并通过编号的方式对这些数据进行统一的管理。2、数组相关的概念:...原创 2021-11-01 08:00:00 · 541 阅读 · 0 评论 -
项目一:家庭收支情况
这里分两个java文件,Utility将我们要用到的功能封装成方法,FamilyAccount是运行的代码,有要用到的功能时直接调用utility中的方法来实现。直接附源码:Utility:import java.util.Scanner;public class Utility{ private static Scanner scanner = new Scanner(System.in); /* 用于界面菜单的选择。该方法读取键盘,如果用户键入1-4的任意字符, 则方法返回。返回值为原创 2021-10-30 19:06:03 · 81 阅读 · 0 评论 -
循环嵌套 之 简简单单 的 输出 九九乘法表
目录嵌套循环的使用代码练习1、输出:******2、输出: ****** ****** ****** ****** 3、输出: * ** *** **** ***** 4、输出九九乘法表5、输出: ****** ...原创 2021-10-24 14:45:02 · 2338 阅读 · 0 评论 -
循环结构:for循环、while循环、dowhile循环 break和continue
目录一、for循环代码练习:二、while循环代码练习三、dowhile循环代码练习一、for循环1、循环结构的四个部分①初始化部分②循环条件--->是boolean型③循环体④迭代条件2、for循环的结构for(①;②;④){ ③}执行过程:①-②-③-④-②-③-④---②代码练习:1、输出十个helloclass ForText{public static void main(String[] arges){ fo...原创 2021-10-24 12:07:42 · 788 阅读 · 0 评论 -
自学java之两个分支结构的使用、练习和注意 那么今年过去多少天了呢?
目录一、分支结构:if-else练习程序1:从键盘输入小明的成绩,按要求输出获得的奖励练习程序2:有键盘输入变量num1,num2,num3,对他们进行排序(使用if-else if-else)并且从小到大输出练习程序3:一只狗,出生的前两年每年相当于人的10.5岁,之后一年是4岁编写一个程序,要求输入数据,算出狗狗相当于多大小知识:如何获取一个随机数:10 - 99联系程序4、在用布尔型时,不填true或者false的方法:引用equals("");就行 而且时在条件语句中...原创 2021-10-19 22:00:18 · 200 阅读 · 0 评论