Java基础
文章平均质量分 73
Java
TuoYingtao
当下每一次想要努力的念头,都有可能是未来的你在向你祈求。
展开
-
JAVA8新特性----函数式接口
函数式接口函数式接口是指一个接口中只声明一个抽象方法,则此接口就称为函数式接口,通过@FunctionalInterface注解来检验当前接口是否是一个函数式接口。java内置的4大核心函数式接口消费型接口 Consumer<T> void accept(T t)供给型接口 Supplier<T> T get()函数型接口 Function<T,R> R apply(T t)断定行接口 Predicate<T> boolean te原创 2021-03-31 23:30:41 · 90 阅读 · 0 评论 -
JAVA8型特性----Lambda表达式
Lambda表达式lambda表达式的使用格式:(o1,o2) -> Integer.compare(o1,o2);-> :Lambda操作符 或 箭头操作符。-> 左边:Lambda形参 (其实就是接口中的抽象方法的形参列表)。-> 右边:Lambda体 (其实就是接口中重写的抽象方法的方法体)。实例:@Testpublic void test2() { Comparator<Integer> comparator = new Comparator原创 2021-03-31 23:29:22 · 99 阅读 · 0 评论 -
JAVA_基础反射创建运行时类的对象
通过反射去创建对应的运行时类的对象newInstance():调用此方法,创建对应的运行时类的对象。内部调用的是空参的构造器。要想此方法正常的创建运行时类的对象,要求:1.运行时类必须提供空参构造器2.空参构造器的访问权限。通常设置为public在javabean中要求提供一个public的空参构造器。原因:1.便于通过反射,创建运行时类的对象2.便于子类继承此运行类时,默认调用super()时,保证父类有此构造器public void test1() throws IllegalAcces原创 2021-01-12 23:31:05 · 157 阅读 · 0 评论 -
JAVA_基础反射机制
Java反射机制概述Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期 借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内 部属性及方法。加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射。正常方式: 引入需要的包名称 → 通过new实例化对象 → 取得实原创 2021-01-08 23:47:18 · 69 阅读 · 0 评论 -
JAVA_基础IO流随机存取文件流(四)
随机存取文件流RandomAccessFile 声明在java.io包下,但直接继承于java.lang.Object类。并 且它实现了DataInput、DataOutput这两个接口,也就意味着这个类可以作为输入流,也可以作为输出流。构造器:public RandomAccessFile(File file, String mode) 、public RandomAccessFile(String name, String mode)创建RandomAccessFile 类实例需要指定一个mode原创 2021-01-06 21:37:17 · 95 阅读 · 0 评论 -
JAVA_基础IO流对象流(三)
处理流:对象流ObjectInputStream和OjbectOutputSteam用于存储和读取基本数据类型数据或对象的处理流。可以把Java中的对象写入到数据源中,也能把对象从数据源中还原回来。序列化:用ObjectOutputStream类保存基本类型数据或对象的机制。反序列化:用ObjectInputStream类读取基本类型数据或对象的机制对象序列化机制序列化:将内存中的Java对象转换成二进制流持久地保存在磁盘上,或通过网络将这种二进制流传输到另一个网络节点(ObjectOutputS原创 2021-01-04 23:34:53 · 102 阅读 · 0 评论 -
JAVA_基础IO流原理及流的分类(二)
IO流的分类I/O是input/output的缩写,I/O技术是非常实用的技术,用于处理设备之间的数据传输。如:读写文件、网络通信等。在Java程序中,对于数据的输入/输出操作以:流(stream)的方式进行。流的分类按操作数据单位不同分为:字节流(8 bit),字符流(16 bit)按数据流的流向不同分为:输入流,输出流按流的角色的不同分为:节点流,处理流(抽象基类)字节流字符流输入流inputStreamReader输出流OutputStream原创 2021-01-03 22:47:04 · 116 阅读 · 0 评论 -
JAVA_基础IO流(一)
IO流File类的使用java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关。File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。 如果需要访问文件内容本身,则需要使用输入/输出流。想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对 象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。File对象可以作为参数传递给流的构造器。如何创建File类的实例public File(String path原创 2021-01-03 22:43:03 · 94 阅读 · 0 评论 -
JAVA_基础泛型
泛型所谓泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类 型或者是某个方法的返回值及参数类型。这个类型参数将在使用时(例如, 继承或实现这个接口,用这个类型声明变量、创建对象时)确定(即传入实 际的类型参数,也称为类型实参)。从JDK1.5以后,Java引入了“参数化类型(Parameterized type)”的概念, 允许我们在创建集合时再指定集合元素的类型,正如:List,这表明 该List只能保存字符串类型的对象。JDK1.5改写了集合框架中的全部接口和类,为这些接原创 2021-01-03 22:38:11 · 84 阅读 · 0 评论 -
JAVA_基础集合Map接口(三)
Map接口一、Map实现类的结构。Map:双列数据,储存key-value对的数据。HashMap:作为Map的主要实现类;线程不安全的,效率高;能存储null的key和valueLinkedHashMap:保证在遍历map元素时,可以按照添加的顺序实现遍历。原因:在原有的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个元素。使用:对于频繁的遍历操作,此类执行效率高于HashMap。TreeMap:保证按照添加的key-value对进行排序,实现排序遍历。此时考虑key的自然排原创 2021-01-03 22:35:45 · 133 阅读 · 0 评论 -
JAVA_基础集合List接口与Set接口(二)
List接口JDK API中List接口的实现类常用的有:ArrayList、LinkedList和Vector。ArrayList:作为List接口的主要实现类;线程不安全;底层使用Object[] elementData储存。LinkedList:对于频繁的插入、删除操作,使用此类效率比ArrayList高;底层使用双向链表储存。Vector:作为List接口的古老实现类;线程安全的;效率底;底层使用Object[] elementData储存。ArrayList的源码分析:JDK 7Arr原创 2021-01-03 22:24:34 · 98 阅读 · 0 评论 -
JAVA_基础集合Collection接口与Iterator迭代器(一)
Java集合框架一、集合框架的概述集合、数组都是对多个数据进行存储操作的结构,简称:Java容器。说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi,数据库中)。数组在存储多个数据方面的特点:一旦初始化后,其长度就确定了。需要指定元素的类型。比如:String[] arr; int[] arr1; Object[] arr2。数组在存储多个数据方面的缺点:一旦初始化,其长度就不能修改。数组中提供的方法非常有限,对于添加、删除、插入数据原创 2021-01-03 14:10:18 · 127 阅读 · 0 评论 -
JAVA_基础注解的概念
什么是注解Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加 载, 运行时被读取, 并执行相应的处理。通过使用 Annotation, 程序员 可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息。代 码分析工具、开发工具和部署工具可以通过这些补充信息进行验证 或者进行部署。Annotation 可以像修饰符一样被使用, 可用于修饰包,类, 构造器, 方 法, 成员变量, 参数, 局部变量的声明, 这些信息被保存在 Annotation 的 name=value 对中。原创 2020-12-31 18:05:27 · 85 阅读 · 0 评论 -
JAVA_基础枚举类
枚举类的理解1)类的对象只有有限个,确定的。2)当需要定义一组常量时,强烈建议使用枚举类。3)如果枚举类中只有一个对象,则可以作为单例模式的实现方式。如何定义枚举类方式一:JDK5.0之前,自定义枚举类。public class SeasonTest { public static void main(String[] args) { Season spring = Season.SPRING; System.out.println(spring);原创 2020-12-31 17:57:46 · 92 阅读 · 0 评论 -
JAVA_基础多线程的生命周期、线程安全、线程锁、线程通信与创建线程(二)
线程的同步同步代码块实现:继承Thread线程安全问题① 操作共享数据的代码,即为需要被同步的代码。(不能包含代码多了,也不能包含代码少了)② 共享数据:多个线程共同操作的变量。比如:ticket就是共享数据。③ 同步监视器,俗称:锁。任何一个类的对象,都可以充当锁。要求:多个线程必须要共用同一把锁。补充:在实现Runnable接口创建多线程的方式中,我们可以考虑使用this充当同步监视器。class RWindow2 extends Thread { public static in原创 2020-12-31 17:48:04 · 83 阅读 · 0 评论 -
JAVA_基础多线程(一)
多线程多线程的创建方式一一、创建一个继承于Thread类的子类二、重写Thread类的run()将此线程执行的操作声明在run()中三、创建Thread类的子类的对象4. 通过此对象调用start()启动当前线程调用当前线程的run()问题一:我们不能直接调用run()的方式启动线程。(直接调用,则是在mian()主线程运行的)public class ThreadDemo { public static void main(String[] args) { /原创 2020-12-31 17:26:53 · 79 阅读 · 0 评论 -
JAVA_基础异常概述与异常体系的结构
异常概述与异常体系的结构Error:java虚拟机无法解决的严重问题。JVM系统内部错误、资源耗尽等严重情况。比如:StackOverflowError,一般不编写针对性的代码进行处理。Exception:其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。比如:空指针访问、试图读取不存在的文件、网络链接中断、数组角标越界。异常体系结构java.lang.Throwable:|-------java.lang.Error:一般不编写针对性的代码进行处理。java.原创 2020-12-31 15:16:44 · 106 阅读 · 0 评论 -
JAVA_基础内部类
内部类java允许将一个类A声明在另一个类B中,则类A就是内部类,类B称为外部类内部类的分类:成员内部类(静态内、非静态内) VS 局部内部类(方法内、代码块内、构造器内)外部类的成员:1)调用外部类的机构。2)可以用被static修饰。3)可以被四种不同的权限修饰。作为一个类:1)类内可以定义属性、方法、构造器等。2)可以被final修饰,表示此类不能被继承。言外之意,不使用final就可以被继承。3)可以被abstract修饰,表示此类不能被实例化。与上面同理,不使用abstract原创 2020-12-31 14:57:15 · 64 阅读 · 0 评论 -
JAVA_基础面向对象:接口
接口(interface)接口的使用:1)接口使用interface来定义。2)在java中,接口和类是并列的两个结构。3)如何定义接口:定义接口中的成员。JDK7及以前:只能定义全局常量和抽象方法。全局常量:public static final(可省略)抽象方法:public abstract (可省略)JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法。接口中定义的静态方法,只能通过接口来调用。通过实现类的对象,可以调用接口中的默认方法。如果实现类重写了原创 2020-12-31 14:56:16 · 81 阅读 · 0 评论 -
JAVA_基础逻辑运算符与位运算符使用
逻辑运算符&-----逻辑与 | ----- 逻辑或 ! ----- 逻辑非&&-----短路与 || ----- 断路或 ^ ----- 逻辑异或aba & ba && ba | ba || b!aa ^ btruetruetruetruetruetruefalsefalsetruefalsefalsefalsetruetruefalsetruefalsetr原创 2020-12-04 15:21:44 · 125 阅读 · 0 评论 -
JAVA_基础面向对象:抽象类与抽象方法
抽象类与抽象方法(abstract)abstract可以用来修饰的结构:类、方法。abstract修饰类(抽象类):1)此类不能在实例化。2)在抽象类中是一定有构造器的,便于子类实例化时调用(涉及子类实例化全过程)。3)开发中,都会提供抽象类的子类,让子类对象实例化,完成相关操作。abstract修饰方法(抽象方法):1)抽象方法只有方法的声明,没有方法体。2)包含抽象方法的类,一定是抽象类。(而抽象类里不一定有抽象方法)3)若子类重写了父类中的所有的抽象方法后,此子类方可实例化,若子类没原创 2020-12-31 14:45:35 · 65 阅读 · 0 评论 -
JAVA_final关键字
final关键字final可以修饰类、方法、变量。1)final用来修饰一个类:此类不能被其它类所继承。比如:String类、System类、StringBuffer类。 2)final用来修饰一个方法:表示此方法不能重写。 比如:Object类中getClass(); 3)final用来修饰变量:此时的”变量“就称为是一个常量。 final修饰属性值的位置有:显示初始化、代码块中初始化、构造器中初始化。 final修饰局部变量:final修饰形参时,表明此形参是原创 2020-12-31 14:44:03 · 54 阅读 · 0 评论 -
JAVA_代码块
代码块1)代码块的作用:用来初始化类、对象2)代码块如果有修饰的话,只能使用static静态代码块 : * 内部可以输出语句 * 随着类的加载而执行 * 初始化类的信息 * 如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行 * 静态代码块要比非静态代码块优先级要高 * 静态代码块只能调用静态的属性与方法,不能调用非静态的结构非静态代码块: * 内部可以输出语句 * 随着对象的创建而加载 * 每创建一个对象,就执行一次非静态代码块 * 可以在创建原创 2020-12-31 14:40:52 · 95 阅读 · 0 评论 -
JAVA_单列设计模式( 懒汉式与饿汉式 )
单例(Singleton)设计模式设计模式:是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模免去我们自己再思考和摸索。就像是经典的棋谱,不同的棋局,我们用不同的棋谱。”套路”所谓类的单例设计模式:就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造器的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类原创 2020-12-12 11:08:28 · 95 阅读 · 1 评论 -
JAVA_static关键字与使用场景简介
static关键字static:静态的static可以用来修改:属性、方法、代码块、内部类使用static修饰属性:静态变量(类变量)属性按是否使用static修饰,又分为:静态属性 vs 非静态属性(实例变量)实例变量:我们创建了类的多个对象,每个对象都独立的拥有一套类中的非静态属性。其中一个对象中的非静态属性时,不会导致其它对象中同样的属性值的修改。静态变量:我们创建了类的多个对象,多个对象共享同一个静态变量。当通过某一个对象修改静态变量时,会导致其它对象调用此对象时为修改过的。sta原创 2020-12-12 10:59:27 · 113 阅读 · 0 评论 -
JAVA_包装类的使用与包装类数据类型转换
包装类的使用① java提供了8种基本数据类型对应的包装类,使基本数据类型的变量具有类的特征。② 掌握:基本数据类型、包装类、String三者之间的相互转换。基本数据类型转换包装类 //基本数据类型--->包装类:调用包装类的构造器 @Test public void test1() { int nu1 = 10;// System.out.println(num1.toString()); Integer int1 = new Integer(nu1); System.原创 2020-12-12 10:05:14 · 114 阅读 · 0 评论 -
JAVA_基础面向对象:继承性与多态的概念及特点
继承性继承性好处减少代码的冗余,提高了代码的复用性便于功能的扩展为之后多态性的使用提供了前提继承使用格式在一个类中继承于一个父类,需要使用extend关键字来表示。A:子类、派生类、subclassB:父类、超类、基类、superclass public class A extends B { .... }体现:一旦子类A继承父类B以后,子类A中就获取了父类B中声明的所有的属性和方法。特别的,父类中声明为private的属性或方法,子类继承父类以后,仍然原创 2020-12-11 11:42:54 · 222 阅读 · 0 评论 -
JAVA_基础面向对象:封装和隐藏(二)
面向对象:封装和隐藏高内聚:类的内部数据操作细节自己完成,不允许外部干涉低耦合:仅对外暴露少量的方法用于使用隐藏对象内部的复杂性,只对外公开简单的接口。便于外界的调用,从而提高系统的扩展性、可维护性。通俗的说就是把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想。private关键字:私有化。private int age;封装性的体现:将类的属性私有化(private),当我们通过对象的实例(instance)是调用不了被修饰的变量的。但我们可以提供公共(public)的方法来原创 2020-12-11 09:55:01 · 107 阅读 · 0 评论 -
JAVA_基础面向对象思想概述、基本介绍及方法的重载与递归(一)
面向对象什么是面向对象java类及类的成员:属性、方法、构造器、代码块、内部类面向对象的三大特点:封装性、继承性、多态性、(抽象性)其它关键字:this、super、static、final、abstract、interface、package、import等面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做。面向对象:强调具备功能的对象,以类/对象为最小单位,考虑谁来做。面向对象的思想概述类(Class)和对象(Object)是是面向对象的核心概念类是对一类事物的描述,是抽象的、原创 2020-12-09 10:13:01 · 96 阅读 · 0 评论 -
JAVA_基础Array数组(一维数组、二位数组)介绍与内存解析
Array数组一、数组的概述数组的理解:① 数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。② 数组属于引用数据类型,数组的元素也可以是引用类型。数组相关的概念:数组名元素角标、下标、索引数组的长度:元素 的个数数组的特点:① 数组是有序排列的② 数组属于引用数据类型变量。③ 创建数组对象会在内存中开辟一整快连续的空间④ 数组的长度一旦确定,就不能修改。⑤ 数组的元素:既可以是基本数据原创 2020-12-08 17:02:08 · 486 阅读 · 0 评论 -
JAVA_基础流程控制语句结构分析介绍
程序流程控制顺序结构程序从上到下逐行执行,中间没有任何判断和跳转分支结构根据条件,选择性的执行某段代码有if……else和switch-case两种分支语句循环结构根据循环条件,重复性的执行某段代码有while、do……while、for三种循环语句注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素Switch-case根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。当调用完执行原创 2020-12-04 15:36:17 · 98 阅读 · 0 评论 -
JAVA_基础数据类型介绍与基本数据类型之间的运算规则
基本数据类型整型: byte、short、int、longjava 的整型常量默认为int型,在java程序中变量通常声明为int型,除非不足以表示较大的数才用long,而在声明long型常量必须在后面加上l或L。类型占用储存空间表数范围byte1字节=8bit-128 ~ 127short2字节-215 ~ 215 - 1int4字节-231 ~ 231 -1 (约21亿)long8字节-263 ~ 263 - 1浮点型:floa原创 2020-12-04 15:07:48 · 132 阅读 · 0 评论