
Java基础
文章平均质量分 78
长安-TreeHole
这个作者很懒,什么都没留下…
展开
-
(63)Java基础 --Stream API
目录一、概述二、Stream类型数据的获取三、Stream中的常用方法四、练习一、概述在jdk1.8中,提供了一个Stream类型,可以对数据进行过滤好处: 比不断的自定义循环,要简单很多public class Demo01_StreamAPI { public static void main(String[] args) { ArrayList<String> names = new ArrayList<>...原创 2021-03-12 08:11:08 · 85 阅读 · 0 评论 -
(62)Java基础 --函数式接口
目录一、概述二、常用内置函数式接口1、消费型接口2、方法引用3、供给型接口4、函数型接口5、断言型接口6、其他接口介绍一、概述Lambda表达式使用的前提,就是接口必须是一个函数式接口。定义 如果在接口中,只有一个抽象方法,那么这个接口就是函数式接口。格式 使用注解来检查当前接口是否是一个函数式接口 @FunctionalInterface 如果不是函数式接口,则编译报错作用 想表达的是一个方法的内容,...原创 2021-03-12 07:48:18 · 367 阅读 · 0 评论 -
(61)Java基础 --Lambda表达式
目录一、引入二、Lambda语法和使用1、语法格式一、引入需求:启动一个线程并输出一句话 @Test public void testTradition() throws Exception { new Thread(new Runnable(){ @Override public void run() { System.out.println("使用传统方式开启线程"); } }).start(); }本着“万物皆对象”的思想,创建原创 2021-03-11 21:38:54 · 183 阅读 · 0 评论 -
(60)Java基础 --单元测试
目录一、测试的概念二、使用Junit4.x进行单元环境1、环境搭建2、使用步骤3、常见注解三、规范的Junit测试方式四、断言1、为什么要使用断言2、什么是断言(猜测)3、常用API一、测试的概念先认识到测试的重要性:优秀的软件不是开发出来的,而是测试出来的。软件测试分类:黑盒测试白盒测试黑盒测试:测试工程师 黑盒测试又称功能测试,主要检测每个功能是否都能正常使用。 在测试中,把程序看...原创 2021-03-11 18:39:09 · 1150 阅读 · 0 评论 -
(59)Java基础 --反射-reflect
目录一、引入二、Class类理解三、获取类的字节码对象(Class类型对象)的三种方式四、Class的newInstance()方法创建对象五、反射构造方法六、反射方法七、反射调用静态方法和数组参数方法八、反射属性九、反射其他的API十、反射应用—泛型擦除一、引入到目前为止我们已经知道了当一个class文件被类加载器加载进内存时,会在JVM中将形成一份描述该class文件结构的元信息对象Class,通过该对象JVM就可以获知class文件的结构信息:如构造器,原创 2021-03-11 16:34:01 · 419 阅读 · 0 评论 -
(58)Java基础 --Java类加载机制
目录一、类加载的原理二、类加载时机三、类加载器 ClassLoader1、什么是类加载器2、类加载器的分类3、全盘负责委托机制4、自定义类加载器(了解)5、实现类的热部署(了解)一、类加载的原理当一个class文件被加载进内存时,在JVM中将形成一份描述该class文件结构的元信息对象Class,通过该对象可以获知class文件的结构信息:如构造器,字段,方法等。虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟原创 2021-03-10 08:35:31 · 124 阅读 · 0 评论 -
(57)Java基础 --多线程 --线程的生命周期
目录一、概述二、java中关于线程状态的描述三、线程状态图四、守护线程(后台线程)一、概述线程是一个动态的概念,有创建的时候,也有运行和变化的时候,必须也就有消亡的时候,所以从生到死就是一个生命周期。在生命周期中,有各种各样的状态,这些状态可以相互转换。新建态:刚创建好对象的时候,刚new出来的时候就绪态:线程准备好了所有运行的资源,只差cpu来临运行态:cpu正在执行的线程的状态阻塞态:线程主动休息、或者缺少一些运行的资源,即使cpu来临,也无法运行死亡态:线程原创 2021-03-08 22:28:04 · 180 阅读 · 0 评论 -
(56)Java基础 --多线程 --线程安全
目录一、线程安全的概述二、线程同步(线程安全处理Synchronized)1、同步代码块2、同步方法三、Lock接口1、Lock接口中的常用方法一、线程安全的概述如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。我们通过一个案例,演示线程的安全问题: 电影院要卖票,我们模拟电影院的卖票过程。假设要播放的电影是 “功夫熊猫3”,本次电影的座位共100个(...原创 2021-03-08 21:26:13 · 214 阅读 · 0 评论 -
(55)Java基础 --多线程
一、多线程的概述进程:进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能。线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程。什么是多线程呢?即就是一个程序中有多个线程在同时执行。通过下图来区别单线程程序与多线程程序的不同:单线程程序:即,若有多个原创 2021-03-08 20:45:30 · 317 阅读 · 0 评论 -
(54)Java基础 --IO流 --字符型缓冲流
目录一、BufferedReader二、BufferedWriter三、PrintWriter(字符打印流)一、BufferedReaderReader有一个子类BufferedReader。子类继承父类显然子类可以重写父类的方法,也可以增加自己的新方法。例如一次读一行就是常用的操作.那么BufferedReader 类就提供了这个方法,可以查看readLine()方法具备 一次读取一个文本行的功能。很显然,该子类可以对功能进行增强。(装饰者模式)。高效的原因:Buffere原创 2021-03-07 16:57:27 · 243 阅读 · 0 评论 -
(53)Java基础 --IO流 --转换流
一、作用字节流转换为字符流。有时,我们需要将字节流转换为字符流,使用InputStreamReader和OutputStreamWriter。(适配器模式 Adaptor) 23设计模式之一/** * 转换流: 作用: 将字节流转换成字符流 InputStreamReader OutputStreamWriter */public class Test { public static void main(String[] args) throws Exception{ .原创 2021-03-07 16:51:02 · 149 阅读 · 0 评论 -
(52)Java基础 --IO流 --System.in 和 System.out
目录一、System.in二、PrintStream(字节打印流)1、构造方法一、System.in监听键盘输入(控制台输入)InputStream is =System.in;is.read();二、PrintStream(字节打印流)打印字节流:System.out就是这个类型的流对象在该类型中,提供了很多的print和println的方法,可以将各种数据类型转换成字符串进行输出注意事项: 1、如果直接使用System.out的方式来获取PrintStr.原创 2021-03-07 16:48:40 · 272 阅读 · 0 评论 -
(51)Java基础 --IO流 --字符流
目录一、字符的概述二、Reader1、常用方法三、Writer1、常见的方法四、使用字符流完成文件拷贝。一、字符的概述使用字节流完成文件拷贝,看起来是一个普通程序,但是它使用的是一种低级的IO。如果针对的内容由字符组成,最好使用字符流,字节流只适用于最为原始的IO。java平台使用Unicode来存储字符。字符流自动在本地字符集和Unicode这种国际通用格式之间转换。例如在西方国家,本地字符集通常是ASCII,在应对国际化的时候,程序员不用做额外的处理。原创 2021-03-07 16:41:19 · 311 阅读 · 0 评论 -
(50)Java基础 --IO流 --字节流
目录一、字节流的概述二、InputStream1、常用方法2、FileInputStream构造方法3、read() 方法4、read(byte[] arr)5、skip(n)6、注意三、OutputStream1、FileOutputStream构造方法2、常用方法四、使用字节流完成文件的拷贝五、字节型缓冲流一、字节流的概述可以直接操作字节信息的流对象 根据流向,可以分成字节输入流和字节输出流 顶层抽象父类分别是:InputStream 和原创 2021-03-07 16:01:19 · 412 阅读 · 0 评论 -
(49)Java基础 --IO流
一、IO流的概念File对象可以表示存在的文件或文件夹,也可以表示不存在的。我们想要得到文件怎么办,File只是操作文件,文件的内容如何处理就需要使用IO流技术了。例如在C盘下有一个名称为a.txt的文本文件.想要通过Java程序读出来文件中的内容,需要使用IO流技术.同样想要将程序中的数据,保存到硬盘的文件中,也需要IO流技术。IO:Input和Output两个单词的缩写,input是输入,output是输出所有输入流都有一个“源”,有读的行为,所有输出流都有一个“目标”,有写的行原创 2021-03-07 15:38:42 · 102 阅读 · 0 评论 -
(48)Java基础 --File类
目录一、File的概念二、相对路径和绝对路径三、File类的构造方法四、File类的常用方法1、创建的方法2、删除的方法3、重命名4、判断功能的方法5、获取功能的方法6、案例一、File的概念Java.io包下代表平台无关的文件和目录。也就是说如果希望在程序中操作文件或目录都可以通过File类来完成。File可以新建、删除、和重命名文件和目录。但File不能访问文件本身,如果需要访问文件内容,则需要 I/O。File类的实例表示一个文件或者目录(文件夹原创 2021-03-05 21:12:19 · 116 阅读 · 0 评论 -
(47)Java基础 --Map(映射)
目录一、Map的含义二、Map的特点三、Map结构图四、Map常用方法五、HashMap(1)使用HashMap演示以上方法(2)Map遍历(3)案例六、HashTable七、TreeMap八、LinkedHashMap九、斗地主练习一、Map的含义Map:双列集合的顶层接口Map:单词含义,地图,地图上的每个点,都表示了生活中的一个具体位置。地图的点和生活中的位置,有一个一一对应的关系,这种关系是通过穷举的方式来描述的。Map是一个以键(ke原创 2021-03-05 15:08:50 · 840 阅读 · 0 评论 -
(46)Java基础 --泛型
一、泛型的概述定义 广泛的类型,在定义一个类的时候,类型中有些方法参数、返回值类型不确定,就使用一个符号,来表示那些尚未确定的类型,这个符号,就称为泛型。使用 对于有泛型的类型,在这些类型后面跟上尖括号,尖括号里面写上泛型的确定类型(在使用某个类创建对象时,已经可以确定这个具体的类型了,那么就直接写出具体类型)。 例如:List<Integer> al = new ArrayList<Integer>();泛型的好处 ...原创 2021-03-04 21:04:27 · 1369 阅读 · 1 评论 -
(45)Java基础 --集合
目录一、集合的概念二、集合和数组的区别三、集合家族四、Collection接口1、增加2、删除3、修改4、判断5、获取6、自定义类的对象在集合中的操作7、Collection接口的子接口五、Set接口1、HashSet2、泛型(入门)3、迭代器和增强型for循环4、HashSet案例5、TreeSet类6、比较器7、TreeSet案例六、List接口1、List中的方法2、ArrayList3、LinkedList原创 2021-02-28 19:42:35 · 1050 阅读 · 0 评论 -
(44)Java基础 --异常
目录一、异常的概述1、现实生活的病2、程序中意外情况的处理方式3、异常的含义4、java异常处理的机制二、异常的语法三、异常的分类四、Error五、Throwable类六、运行时异常和非运行时异常(1)运行时异常(RuntimeException)(2)非运行时异常(受检查异常)七、多重catch块八、程序中的异常处理(1)自行处理(2)throws 关键字(3)手工抛出异常 (throw关键字)九、自定义异常十、finally原创 2021-02-27 22:05:39 · 590 阅读 · 0 评论 -
(43)Java基础 --匿名内部类
目录一、内部类的概念二、使用内部类的理由三、内部类的分类四、普通的成员内部类五、私有的成员内部类六、静态的成员内部类七、局部内部类八、匿名内部类【常用】一、内部类的概念在一个类内部定义的类叫做内部类。包含这个内部类的类叫做外部类。一个器件可能会包含专用的内部器件,内部类的作用相当于这些内部器件。public class Demo01_内部类概述 { private int id; private String name; class MyInner{/原创 2021-02-27 11:53:57 · 222 阅读 · 0 评论 -
(42)Java基础 --包装类
一、为什么会有包装类Java语言一直宣称自己是完全面向对象的语言,但对于基本数据类型并没有做到面向对象。int x = 100在方法调用时,在栈内存为基本数据类型变量分配空间。对应每个基本数据类型,都有一个对象类型与之对应,为之服务。byte Byteshort Shortint Integerlong Longfloat ...原创 2021-02-27 10:57:40 · 181 阅读 · 0 评论 -
(41)Java基础 --递归
目录一、递归的概述二、定义递归方法的两个必备条件三、方法调用栈四、递归案例一、递归的概述递归就是一个方法直接或者间接地调用自身。递归是解决复杂问题的重要方法。递归的思想就是数学上递推的思想。把大任务降解为与之类似的规模更小的任务。比如:public void printNum(int n){ System.out.println(n); // 调用自己 printNum(n-1);}当一个功能比较复杂时,可以把功能向下分解,分解出来的功能的计算原创 2021-02-27 10:33:59 · 257 阅读 · 0 评论 -
(40)Java基础 --工具类和常用类 --System类
System类java.lang.System一、概述用于描述系统资源的类型,该类不用创建对象,直接使用静态变量和静态方法即可。System类是与系统相关的一个类, 从它里面可以得到与系统相关的属性。比如: 操作系统的名称,版本等,jre的安装目录,java的版本。二、常用字段System.in:标准输入流,默认关联到键盘上 System.out:标准输出流,默认关联到控制台上 System.err:标准错误输出流,默认关联到控制台上,用于打印错误信息,在ec...原创 2021-02-26 16:54:14 · 185 阅读 · 0 评论 -
(39)Java基础 --工具类和常用类 -Random类
Random类java.util.Random一、作用Random类可以随机得到一个数字,而且可以在某一个范围内随机得到一个数字。二、构造方法Random()三、常用方法nextBoolean() 随机生产true 或falsenextDouble() 随机生产 0 到1 之间的随机浮点数nextFloat()随机生产 0 到1 之间的随机浮点数nextInt()随机生产整数nextLong() 随机生产整数nextInt(n) 随机生产 0 到...原创 2021-02-26 16:38:20 · 247 阅读 · 0 评论 -
(38)Java基础 --工具类和常用类 --Math类
Math类java.lang.Math一、作用Math类封装了很多数学的功能(都是静态方法和静态属性)。二、Math类一些常用方法abs(num):求绝对值 round(num):四舍五入 cbrt(num):求立方根sqrt(num):求平方根max(num,num):返回两个num值中的最大值min(num,num):返回两个num值中的最小值ceil(num):向上求整 floor(num):向下求整 random():随机得到一个[0,1).原创 2021-02-26 16:25:35 · 139 阅读 · 0 评论 -
(37)Java基础 --工具类和常用类 --BigDecimal类
BigDecimal类java.math.BigDecimal一、作用float、double两种浮点数类型运算是不够精确,不仅是java语言,很多编程语都有这样的问题。为了能够精确表示和计算浮点数,java提供了BigDecimal类。二、构造方法BigDecimal(Stringval) 将BigDecimal的字符串表示 BigDecimal转换为 BigDecimal 。 三、常用方法1.add(BigDecimalaug...原创 2021-02-26 11:11:10 · 233 阅读 · 0 评论 -
(30)Java基础 --抽象类
一、抽象方法只有方法声明,没办法实现方法体的方法,就可以定义成一个抽象方法。用abstract关键字修饰的方法,称为抽象方法。抽象方法的特点:只有方法的声明,没有方法体。定义格式: public abstract 返回值类型 方法名(形参列表);抽象方法的作用:被子类重写,为子类规定了方法的调用格式,具体的操作内容等待子类去完成。二、抽象类如果在类中定义了抽象方法,哪怕只定义了一个抽象方法,那么这类就必须定义成抽象类。但是,并不是说抽象类中必须定义抽象方法,可以...原创 2021-02-25 13:35:13 · 208 阅读 · 0 评论 -
(29)包和访问权限
一、包1、包的概念包是Java程序组织文件的一种方式,实质就是文件夹。包的作用:1、方便管理大型软件系统中数目众多的类。2、相同名称的类可以放到不同的包中解决了命名冲突的问题。在项目中创建包的规则: 1.见名知意,而且都小写; 2.一般在项目中是先创建一个最顶层的包: 使用公司域名的倒写 + 项目名的英文缩写 例如: mobile office...原创 2021-02-24 20:41:04 · 371 阅读 · 0 评论 -
(28)Java基础 --final关键字
一、final概述final是个修饰符。final是最终的,不可修改的意思。final可以修饰类,方法,成员变量,局部变量,方法形参二、final修饰变量此时的变量转为常量。此变量在第一次被赋值后,再不能修改它的值。public class Test{ private final int age=10; // 必须赋值 public void method(){ age = 100; // 编译报错,不能重新赋值 }}成员常量一般也做成static类型,因为原创 2021-02-24 19:39:25 · 203 阅读 · 0 评论 -
(27)Java基础 --Object类
一、Object类型的概述Object类是所有类型的顶层父类,所有类型的直接或者间接的父类;所有的类型中(包括数组)都含有Object类中的所有方法。随意定义一个类型,不手动显式定义其父类,那么这个类的父类就是Object类。二、Object类的构造方法Object类的构造方法:Object()1、可以自己创建对象。2、让子类访问,所有子类都会直接或者间接的访问到这个顶层父类的构造方法。3、Object类在执行构造方法时,不去访问自己的父类,因为没有父类了。三、Object类原创 2021-02-24 16:51:23 · 579 阅读 · 0 评论 -
(26)Java基础 --继承
一、继承的概述二、继承的语法三、继承的术语四、java中继承的规定五、方法重写(覆盖 override)六、重载与重写的区别七、super关键字八、构造方法的特殊性九、instanceof关键字原创 2021-02-23 18:23:37 · 312 阅读 · 0 评论 -
(25)Java基础 --字符串缓冲区StringBuilder
目录一、概述二、构造方法三、常用的一些方法1、获取容积的方法2、添加字符串的方法3、删除字符串的方法4、替换和反转字符串的方法5、练习四、String和StringBuilder拼接字符串的区别五、String和StringBuilder的相互转换六、StringBuffer和StringBuilder的区别七、String和StringBuilder作为方法的参数八、字符串的比较 ==和equals一、概述StringBuilder类的对象.原创 2021-02-23 14:29:09 · 665 阅读 · 0 评论 -
(24)Java基础 --String类
一、概述String就是字符串类型,属于java.lang包,不需要导包 所有的字符串常量(“Hello World”、”abc”)都属于String类型的对象 字符串字面值属于常量,存储在方法区的常量池中。 String类型在创建之后就无法更改(是一个不可变的字符序列)。 不可变的原因是String类型只提供了构造方法,没有提供set方法,因此只能在创建对象的时候,初始化成员变量,将来对象创建完成之后,无法通过方法来修改。二、常量池对程序而言,全部String字面值中往往有大量的冗余,为原创 2021-02-21 21:34:12 · 498 阅读 · 0 评论 -
(23)Java基础 --单例模式
单例模式(Singleton)GOF的23种设计模式中的一种一些人总结出来用来解决特定问题的固定的解决方案。单例模式是用来解决 在整个系统中该类始终只有一个实例对象之类的问题。(解决一个类在内存中只能存在一个对象,想要保证对象的唯一) 1 为了避免其他程序过多的建立该类对象。禁止其他程序建立该类对象。 2 为了其他程序可以访问该类对象,在本类中自定义一个对象。 3 方便其他程序对自定义类的对象的访问,对外提供一些访问方式。电商系统中的购物车使用的就是...原创 2021-02-20 18:47:46 · 137 阅读 · 0 评论 -
(22)Java基础 --static关键字
一、static关键字概述static(静态的)static可以修饰变量,方法,类,代码块。(一个class文件就是一个类,例如:Student.class)static修饰的变量称为静态变量。static修饰的方法称为静态方法。static修饰的初始化代码块,称为静态初始化块。static修饰类,静态内部类。如果变量的值是固定了, 就可以把它定义成一个被static修饰的变量(静态变量)。二、静态变量用static修饰的变量叫做静态变量(类变量)。静态变量的特征:类原创 2021-02-20 15:31:39 · 292 阅读 · 0 评论 -
(21)Java基础 --面向对象(2)
面向对象一、封装如果类当中有一些成员不希望被外界直接访问,那么可以使用private关键字进行修饰,从而达到确保数据安全的目的。private是私有的意思,可以修饰属性和方法。被它修饰的属性和方法只能在本类中使用,不能在其它类中使用。定义私有属性: 使用private修饰属性的格式,在数据类型的前面加private关键字,格式为: private 数据类型 属性名;定义私有方法: 使用private修饰方法,在返回值类型前面添加p...原创 2021-02-18 20:29:11 · 160 阅读 · 0 评论 -
(20)Java基础 --面向对象(1)
面向对象一、概述面向: 看向,看中,面对。对象: 帮你做事情的那个人。面向对象是一种编程思想。如今主流的软件开发思想有两种:一个是面向过程,另一个是面向对象。面向过程出现得较早,典型代表为C语言,开发中小型项目的效率很高,但是很难适用于如今主流的大中型项目开发场景。面向对象则出现得更晚一些,典型代表为Java或C++等语言,更加适合用于大型开发场景。两种开发思想各有长短。对于面向过程的思想:当需要实现一个功能的时候,看中的是每一个步骤怎么做,整体的过程是怎...原创 2021-02-18 12:22:11 · 234 阅读 · 0 评论 -
(19)Java基础 --数组
目录一、数组的概述二、数组的定义和初始化数组的定义数组的初始化三、访问数组元素四、数组内存图五、数组排序六、计算元素的地址的公式七、二维数组一、数组的概述数组是存储多个变量(元素)的容器;这多个变量的数据类型要一样,数组既可以存储基本数据类型,也可以存储引用数据类型。元素都有自己的编号,编号是从0开始的,第一个元素的编号是0,第二个元素的编号1,往后依次加1,最后一个元素的编号是长度减1。二、数组的定义和初始化数组的定义格式1:数据类型[.原创 2021-02-17 20:38:41 · 679 阅读 · 0 评论 -
(18)Java基础 --方法
方法1、概述一个具有独立功能的代码块。某段代码经常使用,所以使用大括号,将这段代码包起来,起个名字。以后就使用这个名字来代替这段代码。在代码中使用方法(定义方法和调用方法)的好处: 1.尽量避免代码重复,可以简化代码,让代码结构变得更加清晰,提高了代码的复用性; 2.可以把功能的设计和调用进行分离,提高了代码的封装性,大括号中的内容,其他调用者看不到也无法直接访问; 3.提高开发效率。2、方法的定义格式:修饰符 返回值类型 方法名称 (参数...原创 2021-02-17 15:10:20 · 163 阅读 · 0 评论