javaSE
寒青~
这个作者很懒,什么都没留下…
展开
-
JavaSE 自动类型提升与强制类型转换
目录一.自动类型提升:说明:二.强制类型转换:三.变量运算规则的两种特殊情况:1.编码情况一:2.编码情况二:基本数据类型之间的运算规则:前提:这里讨论只是7种基本数据类型间的运算。不包含boolean类型的。一.自动类型提升:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。byte 、short、char --> int --> long --> float --> double。前三个类型相互做运算(byte、short、原创 2020-07-20 23:21:51 · 115 阅读 · 0 评论 -
JavaSE Java8新特性(Optional类)
目录一.Optional类:一.Optional类:原创 2020-07-18 15:59:22 · 116 阅读 · 0 评论 -
JavaSE Java8新特性(Stream的中间操作与终止操作)
目录一.筛选与切片:一.筛选与切片:原创 2020-07-18 14:59:46 · 593 阅读 · 0 评论 -
JavaSE Java8新特性(StreamAPI的四种创建方式)
目录一.StreamAPI:1.什么是Stream:2.三点注意:3.Stream的操作步骤:二.实例化StreamAPI的四种方式:1.通过集合来进行创建2.通过数组来创建:3.通过Stream的of()来创建:4.创建无限流:一.StreamAPI:1.什么是Stream:用于操作数据源(集合、数组等)所生成的元素序列。集合关注的是数据,针对于内存,Stream关注的是计算,针对CPU。2.三点注意:Stream自己不会存储元素Stream不会改变源对象。相反,他们会返回一个持有结果原创 2020-07-14 23:16:37 · 111 阅读 · 0 评论 -
JavaSE Java8新特性(方法引用与构造器引用)
目录一.方法引用:1.使用情景:2.本质:3.使用格式:4.要求:二.方法引用使用的三种情况:1.对象 :: 非静态方法2.类 :: 静态方法3.类 :: 非静态方法一.方法引用:1.使用情景:当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用2.本质:方法引用的本质上就是一种Lambda表达式,而Lambda表达式作为函数式接口的实例,所以,方法引用,也是函数式接口的实例3.使用格式:对象 :: 静态方法类 :: 静态方法类 :: 非静态方法4.要求原创 2020-07-13 23:02:44 · 102 阅读 · 0 评论 -
JavaSE Java8新特性(函数式接口)
目录一.函数式接口:1.什么是函数式接口:2.Java内置四大核心函数式接口:消费型接口Consumer < T > void accept(T t)供给型接口Supplier< T > T get()函数型接口Function< T , R > R apply(T t)断定型接口 Predicate< T > boolean test(T t)一.函数式接口:1.什么是函数式接口:只包含一个抽象方法的接口,称为函数式接口。在java.原创 2020-07-11 16:02:33 · 200 阅读 · 0 评论 -
JavaSE Java8的新特性(Lambda表达式)
目录Lambda表达式:1.Lambda表达式的语法:2.Lambda表达式的使用:情况一:无参,无返回值情况二:有一个参数,无返回值:情况三:类型推断:情况四:有一个参数,参数的括号可以省略:情况五:多个参数:情况六:Lambda体只有一条执行语句,return和{}可以省略总结:3.Lambda表达式的本质:Lambda表达式:1.Lambda表达式的语法:Lambda操作符 或 箭头操作符左边:Lambda形参列表 (其实就是接口中的抽象方法的形参列表)右边:Lambda体 (其实就是原创 2020-07-11 14:18:23 · 111 阅读 · 0 评论 -
JavaSE 反射(调用运行时类的指定结构)
目录一.调用运行时类的指定结构:1.操作运行时类指定的属性:2.操作运行时类的方法:3.获取运行时类的指定的构造器:一.调用运行时类的指定结构:Person类:1.操作运行时类指定的属性:2.操作运行时类的方法:3.获取运行时类的指定的构造器:...原创 2020-07-11 11:35:40 · 69 阅读 · 0 评论 -
JavaSE 反射(获取运行时类的完整结构)
目录一.获取指定结构:1.获取类的属性结构:2.获取类的方法:3.获取类的构造方法:一.获取指定结构:在此之前创建了一个Person类1.获取类的属性结构:2.获取类的方法:3.获取类的构造方法:...原创 2020-07-11 11:06:31 · 92 阅读 · 0 评论 -
JavaSE 反射(Class类)
目录一.Class类的理解:1.类的加载过程:2.获取Class的实例的方式:方式一:.class方式二:getClass()方式三:forName(String classPath)方式四:使用类的加载器:3.Class类的对象二.类的加载器:一.Class类的理解:1.类的加载过程:程序经过javac.exe命令以后,会生成一个或多个字节码文件(.class结尾),接着我们使用java.exe命令对某个字节码文件进行解释运行。相当于将某个字节码文件加载到内存中。此过程就称为类的加载。加载到内存原创 2020-07-11 09:49:41 · 89 阅读 · 0 评论 -
JavaSE 网络编程(URL类)
目录一.URL:1.什么是URL:2.URL包含五个部分:3.URL类的相关方法4.URL的相关编程:一.URL:1.什么是URL:Unifrom Resource Locator:统一资源定位符,它表示Internet上某一个资源的地址。2.URL包含五个部分:<传输协议>://<主机名>:<端口号>/<文件名>#片段名?参数列表http://localhost:8080/example/index.jsp#a?username=tom&原创 2020-07-08 18:33:27 · 130 阅读 · 0 评论 -
JavaSE 网络编程(socket网络编程举例)
一.基于TCP的网络编程:1.例题一:客户端发送信息给服务器,服务器端将数据显示在控制台上:先开服务端:服务端正在等待客户端连接再开客户端:客户端连接成功服务端显示:2.例题二:...原创 2020-07-08 17:44:42 · 187 阅读 · 0 评论 -
JavaSE 网络编程(TCP与UDP)
目录一.TCP协议:1.TCP三次握手2.握手为什么是3次?3.TCP四次挥手:二.UDP协议:一.TCP协议:可靠传输协议,在使用TCP之前必须进行TCP连接,形成传输数据的通道传输前,采用“三次握手”方式,点对点通讯,是可靠的TCP协议进行通讯的两个应用进程:客户端,服务端在传出中精心大量数据的传输传输完毕,需要释放已建立的连接,效率低1.TCP三次握手在传输前要要进行三次握手:左边是客户端,右边是服务端;比如左边看成张三,右边看成李四;小明给李四发信息,你好,我是张三;原创 2020-07-07 19:06:31 · 549 阅读 · 0 评论 -
JavaSE 网络编程(IP和端口号)
目录一.网络编程的两个问题:二.网络编程中的两个要素:三.网络通讯要素一:IP和端口号1.IP地址:1.1.域名:1.2.实例化InetAddress的两个方法:方法一:getByName(String host)方法二: getLocalHost(String host)1.3.两个常用方法(1)getHostName():(2)getHostAddress():2.端口号:一.网络编程的两个问题:如何准确的定位网络上一台或多台主机;定位主机上的特定应用找到主机后如何可靠有效的进行数据传输二.原创 2020-07-07 12:32:38 · 313 阅读 · 0 评论 -
JavaSE IO流(随机存取文件流)
目录一.RandomAccessFile的使用:二.构造器:1.public RandomAccessFile(File file,String mode)三.代码的举例:四.seek(long pos)方法:一.RandomAccessFile的使用:RandomAccessFile直接继承于java.lang.Object类,实现了DataInput和DateOutput接口RandomAccessFile既可以作为一个输入流,又可以作为一个输出流如果RandomAccessFile作为输出流原创 2020-07-07 11:35:37 · 168 阅读 · 0 评论 -
JavaSE IO流(其它处理流的使用)
目录一.标准输入、输出流1.System.in:标准输入流2.System.out:标准输出流3.练习:二.打印流:1.PrintStream:2.PrintWriter:三.数据流:1.DataOutputStream:2.DataInputStream:3.作用:一.标准输入、输出流1.System.in:标准输入流默认从键盘输入2.System.out:标准输出流默认从控制台输出3.练习:从键盘输入一个字符串,要求将读取的字符串转成大写输出,然后继续进行输入操作。直到当输入"e"或者”e原创 2020-07-06 20:29:28 · 79 阅读 · 0 评论 -
JavaSE IO流(处理流之三:对象流)
目录一.对象的序列化机制:二.序列化:ObjectOutputStream:1.序列化过程:2.代码:三.反序列化:ObjectInputStream:一.对象的序列化机制:语序把内存中的java对象转换成平台无关的二进制流,从而把这种二进制流永久的保存在磁盘上,或通过网络将这种二进制流传输到另一个网络结点。当程序获取了这种二进制流,就可以恢复成原来的Java对象。二.序列化:ObjectOutputStream:1.序列化过程:将内存中的对象保存到磁盘中或通过网络传输出来使用ObjectOu原创 2020-07-06 19:07:18 · 179 阅读 · 0 评论 -
JavaSE IO流(处理流之二:转换流)
一.转换流的使用:InputStreamReader:将一个字节的输入流转换为字符的输入流。OutputStreamWriter:将一个字符的输出流转换为字节的输出流1.作用:提供字节流与字符流之间的转换。案例一:我们先看一个案例:字符转字节:案例二:综合使用InputStreamReader和OutputStreamWriter:按照上图将utf-8编码集转换成gbk编码集存储。...原创 2020-07-05 19:21:29 · 140 阅读 · 1 评论 -
JavaSE IO流(处理流之一:缓冲流)
目录字节型:一.BufferedInputStream、BufferedOutputStream:1.使用:2.作用:3.处理流:字符型:一.BufferedReader、BufferedWriter1.使用:2.总结:字节型:一.BufferedInputStream、BufferedOutputStream:1.使用:实现非文本文件的复制先写出大致的四步骤,再用try-catch-finally的方式将代码包住。加上try-catch-finally进行配置后得到的代码:2.作用:原创 2020-07-04 18:38:57 · 113 阅读 · 0 评论 -
JavaSE IO流(节点流)
目录字符:一.读:FileReader1.说明点:2.使用read()的重载方法2.1第三步中for循环的两种错误写法:二.写:FileWriter:1.说明:三.读写操作总结:字节:一.读:FileInputStream二.写:FileOutputStream三.结论:字符:一.读:FileReader读取当前module下的hello.txt文件。将字符一个一个的读取,然后再输出。即:一次循环读取一个字符。1.说明点:read()的理解:返回读入一个字符。如果达到文件末尾,返回-1异原创 2020-07-04 17:26:35 · 229 阅读 · 0 评论 -
JavaSE IO流(流的分类)
这里写目录标题一.流的分类:1.抽象基类:2.流的体系:一.流的分类:按操作数据单位不同分为:字节流(8 bit),字符流(16 bit)按数据流向不同分为:输入流,输出流按流的角色的不同分为:节点流,处理流1.抽象基类:字节流:InputStream、OutputStream字符流:Reader、Writer2.流的体系:本次重点学习这几个:节点流(或 文件流):FileInputStreamFileOutputStreamFileReaderFileWriter原创 2020-07-04 11:40:50 · 100 阅读 · 0 评论 -
JavaSE 集合(Collections工具类)
这里写目录标题Collections的常用方法:1.reverse(List):2.shuffle(List):3.sort(List):4.sort(List,Comparator):5.swap(List,int,int):6.int frequency(Collection,Object):7.void copy(List dest,List src):8.synchronizedXxx()方法:二.面试题:Collections的常用方法:1.reverse(List):反转List中元素的顺原创 2020-06-30 11:30:21 · 124 阅读 · 0 评论 -
JavaSE 集合(Collection子接口之三:Map接口)
一.Map接口的框架:|----Map:双列数据,存储key-value对的数据 ---类似于高中的函数:y=f(x),python中的字典 |-----HashMap:作为Map的主要实现类:线程不安全的,效率高:存储null的key和value |-----LinkedHashMap:保证在遍历map元素时,可以按照添加的顺序实现遍历; 原因:在原有的HashMap底层结构基础上,添加一对指针,指向前一个和后一个元素。 |-----TreeMap:保证按照添加的key-value对原创 2020-06-29 18:52:20 · 217 阅读 · 0 评论 -
JavaSE 集合(Collection子接口之二:Set接口)
一.Set接口的框架:|-----Collection接口:单列集合,用来存储一个一个的对象 |-------Set接口:存储无序的、不可重复的数据 ----> 高中的"集合" |--------HashSet:作为Set接口的主要实现类,线程不安全;可以存储null值 |--------LinkedHashSet:作为HashSet的子类,遍历其内部数据时,可以按照添加的顺序遍历 |--------TreeSet:可以按照添加的元素或者添加的对象指定进行排序。1.Set:存原创 2020-06-27 19:13:54 · 232 阅读 · 0 评论 -
JavaSE 集合(Collection子接口之一:List接口)
一.ArrayList、LinkedList、Vector三者的异同?同:三个类都是实现了List接口,存储数据的特点相同:存储有序的、可重复的数据不同:ArrayList:作为List接口的主要实现类:线程不安全的,效率高:底层使用Object[]存储。LinkedList:对于频繁的插入、删除操作,使用效率比ArrayList高;底层使用到双向链表存储。Vector:作为List接口的古老实现类:线程安全的,效率低;底层使用Object[]存储。二.ArrayList的源码分析:1.jdk原创 2020-06-27 14:15:12 · 150 阅读 · 0 评论 -
JavaSE 集合(新特性foreach循环)
一.使用foreach循环遍历循环元素:JDK5.0新增了foreach循环,用于遍历集合、数组1.遍历集合将collection对象赋值给obj局部变量,然后输出;内部仍然调用了迭代器。2.遍历数组:二.笔试题:数组元素发生了改变;数组中的元素并未发生改变;因为foreach遍历是将arr数组中的值赋值给局部变量s;这里改变的是s的值。并不是数组元素。...原创 2020-06-26 15:45:44 · 127 阅读 · 0 评论 -
JavaSE 集合(Iterator迭代器)
一.迭代器的执行原理:while(iterator.hasNext()){ System.out.println(iterator.next());}刚开始指针指向123的上面1.hasnext():判断是否还有下一个元素:2.next():1.指针下移2.将下移以后集合位置上的元素返回3.整个的执行过程为:最开始指针在123的上面,通过hasNext()判断下一个元素是否为空,如果不为空返回true,然后调用next(),将指针下移,返回下移后的集合位置的元素值。以此类推。直原创 2020-06-26 14:01:15 · 124 阅读 · 0 评论 -
JavaSE 集合(Collection接口的常用方法)
一.Collection接口的常用方法:1.add(Object e):将元素e添加到集合coll中2.size():获取添加的元素的个数3.addAll(Collection coll):将coll集合中的元素添加到当前的集合中4.isEmpty():判断当前集合是否为空:5.clear():清空集合中的所有元素6.contains():判断当前集合中是否包含obj比较的是内容;像Collection接口的实现类添加数据时,要求obj所在类要重写equals()方原创 2020-06-25 23:38:04 · 189 阅读 · 0 评论 -
JavaSE 集合(框架概述)
一:集合框架概述:1.Collection接口继承树:2.Map接口继承树:|---------Collection接口,单列集合,用来存储一个一个对象 |--------------List接口:存储有序的、可重复的数据。 ----> “动态”数组 |--------------ArrayList、LinkedList、Vector |--------------Set接口:存储无序的、不可重复的数据 ----> 高中将的"集合" |---------------H原创 2020-06-25 19:23:05 · 105 阅读 · 0 评论 -
JavaSE 注解
一.JDK内置的三个注解注解是jdk 5.0 新增功能1.@Override限定重写父类的方法,该注解只能用于方法2.@Deprecated:用于表示所修饰的元素(类,方法)已过时。希望开发者用新的JDK中的结构。3.@SuppressWarnings抑制编译警告。在编译器中定义一个变量,但未使用它,会出现一个警告。当加上这个注解时候,这个警告变不会出现。二.自定义注解:1.注解申明为@interface2.内部定义成员,使用value表示3.可以指定成员的默认值,使用defa原创 2020-06-25 19:06:02 · 146 阅读 · 0 评论 -
JavaSE 枚举类
一.枚举类的使用:1.枚举类的理解:类和对象只有有限个,确定个,我们称此类为枚举类;2.当需要定义一组常量时,强烈建议使用枚举类3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式。二.如何自定义枚举类:方式一:jdk5.0之前,自定义枚举类方式二:jdk5.0 可以使用enum关键字定义枚举类注:使用enum关键字定义枚举类不需要重写toString()方法,因为enum定义的枚举类继承了Enum类,Enum重写了toString()方法。三.Enum类中的主要方法:1.va原创 2020-06-24 19:19:12 · 157 阅读 · 0 评论 -
JavaSE 常用类(Java比较器)
一.说明:java中的对象,正常情况下,只能进行比较:== 或 != 。不能使用 > 或 < 的方式。但是在开发场景中,我们需要对多个对象进行排序,言外之意,就需要比较对象的大小。如何实现?使用两个接口中的任何一个:Comparable 或 Comparator二.Comparable接口:(自然排序)Comparable接口的使用举例:自然排序1.像String、包装类等实现了Comparable接口,重写了compareTo(obj)方法。给出了比较两个对象大小的方式2.像St原创 2020-06-24 17:26:18 · 133 阅读 · 0 评论 -
JavaSE 常用类(JDK8中的日期和时间的API)
JDK8中的日期和时间的API一.jdk8之前的API存在着一些问题:①可变性:像日期和时间这样的类应该是不可变的②偏移量:Date中的年份是从1990开始的,而月份都是从0开始的③格式化,格式化只对Date有用,Calendar则不行二.localDate、localTime、localDateTime方法:1.now():返回当前的时间2.of():设置指定的年月日时分秒。没有偏移量3.getXxx():4.不可变性:三.instant类:1.now()方法:2原创 2020-06-24 13:14:51 · 167 阅读 · 0 评论 -
JavaSE 常用类(JDK8之前日期时间的API)
一.Date类:JDK8之前的日期和时间的API测试:java.util.Date类 |-------java.sql.Date类1.两个构造器的使用:A.构造器一:Date():创建一个对应当前时间的Date对象。B.构造器二:创建指定毫秒数的Date对象。//构造器一:Date()Date date1 = new Date();System.out.println(date1.toString()); //Tue Jun 23 23:13:26 CST 2020Syste原创 2020-06-24 12:06:49 · 106 阅读 · 0 评论 -
JavaSE 常用类(StringBuffer与StringBuilder)
一.String、StringBuffer、StringBuilder三者的异同:String:不可变的字符序列;底层用char[]数组存储StringBuffer:可变的字符序列;线程安全的,效率偏低,底层用char[]数组存储。StringBuilder:可变的字符序列;jdk5.0新增的,线程不安全的,效率高一些,底层用char[]数组存储。三者执行的效率从高到低排列:StringBuilder > StringBuffer > String二.StringBuffer、St原创 2020-06-23 21:04:47 · 255 阅读 · 0 评论 -
JavaSE 常用类(String类与其他类型之间的转换)
一.String -> 基本数据类型、包装类String ----> 包装类、基本数据类型:调用包装类的静态方法:parseXxx(str)String str1 = "123";int num = Integer.parseInt(str1);将基本数据类型、包装类 --> String:调用String重载的valueOf(xxx):int num = 100;String str2 = String.valueOf(num) //"123"二.String类与ch原创 2020-06-23 18:12:09 · 107 阅读 · 0 评论 -
JavaSE 常用类(String类的常用方法)
String类的常用方法一:1.int length():返回字符串长度;2.char charAt(int index):返回某索引处的字符3.boolean isEmpty():判断是否是空字符串4.String toLowerCase():将String中的多有字符串转为小写;s1调用此方法,但s1本身并不改变。5.String toUpperCase():将String中的所有字符串转换为大写;6.trim():返回字符串的副本,忽略前导空白和尾部空白;7.bool原创 2020-06-23 16:27:44 · 324 阅读 · 0 评论 -
JavaSE 常用类(String类实例化的两种方式及内存结构)
String类:1.String的特性:1.String声明为final的,不可继承的;2.String实现了Serializable接口:表示字符串时支持序列化的;String实现了Comparable接口:表示String可以比较大小;3.String 内部定义了final char[] value 用于存储字符串数据;4.String:代表不可变的字符序列,简称不可变性;5.2.String类的内存实现:...原创 2020-06-23 10:41:29 · 207 阅读 · 0 评论 -
JavaSE 多线程(死锁)
一:线程的生命周期:新建:当一个线程被创建的时候,新生的线程处于新建状态就绪:处于新建状态的线程被start()后,将进入线程队列等待CPU时间片,此时它已具备运行条件,只是没分配到CPU资源。运行:当就绪的线程被调度并获得CPU资源时,边进入运行状态,run()方法定义了线程的操作和功能。阻塞:在某种特殊情况下,被人为挂起或执行输入输出操作时,让CPU临时终止自己的执行,进入阻塞状态。死亡:线程 完成它的全部工作、线程被提前强制性终止、出现异常导致结束。二:死锁:1.理解:①不同线程分别原创 2020-06-20 18:30:44 · 78 阅读 · 0 评论 -
JavaSE OOP(面向对象)abstract抽象
abstract1.abstract:抽象的2.abstract:可以用来修饰的结构:类、方法;3.abstract修饰类:抽象类1.此类不能实例化2.抽象类中一定有构造器,便于子类实例化时调用(涉及:子类实例化的全过程)3.开发中,都会提供抽象类的子类,让子类实例化,完成相关的操作。4. abstract修饰方法:抽象方法1.抽象方法只有声明、没有方法体2.包含抽象方法的类,一定是抽象类。反之,抽象类中可以没有抽象方法。3.若子类重写了父类的抽象方法后,此子类方可实例化。若子类没有重原创 2020-06-11 17:04:20 · 129 阅读 · 0 评论