
javase
java基础
不畏未来!不念过去
java初学者
展开
-
23.java接口默认方法和时间API
1.接口默认方法1.1 接口默认方法的定义在java8之前,接口(interface)没有提供任何具体的实现,接口定义的方法全部都是抽象方法java8之后对接口做了进一步增强:允许接口中可以添加使用default关键字,即默认方法,或者也可以叫做可扩展方法接口里可以声明静态方法,并且可以做具体实现默认方法与抽象方法的区别抽象方法必须要实现,默认方法不是,因为默认方法做了具体实现;这个接口中的默认方法可以通过子类继承到这个默认方法,当然子类也可以重写该默认方法。为了提高代码的可重原创 2020-10-12 20:33:15 · 278 阅读 · 0 评论 -
22.Stream流
Stream流1.定义单从"stream"这个单词来看,它似乎和我们之前学的IO流中的InputStream和OutputStream流有些关系。实际上,没有任何关系!java8新增的Stream流是为了提高程序员在集合的操作要想操作流,首先需要一个数据源,可以是数组或者集合,每次操作都会返回一个新的流对象,方便链式进行操作,但原有的流对象会保持不变。2.创建流import java.util.ArrayList;import java.util.Arrays;import java.ut原创 2020-10-12 20:29:39 · 241 阅读 · 0 评论 -
21.java8新特性lambda
1.lambda表达式1.定义lambda表达式是jdk8的一个新特性,可以取代大部分的匿名函数,写出更优雅的java代码,尤其在集合遍历和其他集合操作中,可以极大的优化代码结构jdk1.8(java8)也提供了大量的内置函数式接口供我们使用,使用Lambda表达式的运用更加方便、高效Lambda表达式一定要配合函数式接口一起使用!所谓函数式接口,就是接口中只有一个抽象方法的接口就是函数式接口,jdk也内置了函数式接口。2.函数式接口接口中只有一个抽象方法的接口就是函数式接口。可原创 2020-10-12 20:26:59 · 169 阅读 · 0 评论 -
17.多线程(4)
13.线程池1.什么是线程池一个创建线程的容器,可以通过该容器去创建不同业务场景的线程来完成不同的需求2.为什么需要线程池线程缺少统一的管理,占用过多的系统资源缺乏更多功能.比如定时执行、定期执行等使用线程池的优势可以重用存在的线程,减少对象的创建、消亡的开销有效的控制并发数,提高系统资源的使用率线程池可以实现定时执行、定期执行等功能.3.如何创建线程池线程池所在的包都在java.util.concurrent包下,顶级的接口Executors,真正的线程池接原创 2020-10-12 20:25:55 · 108 阅读 · 0 评论 -
17.多线程(3)
11.线程死锁问题线程死锁是一定要规避的问题!问题:两个小孩都喜欢对方的玩具唐唐:你把你的玩具鸭借我玩,我就把芭比娃娃给你玩豆豆:你把你的芭比娃娃借给我,我就把玩具鸭借给你造成了僵局的状态,谁都不把自己的玩具给对方,这就是死锁案例1唐唐类public class TangTang implements Runnable { Object babi = new Object();//芭比娃娃 Object duck = new Object();//玩具鸭 @Ov原创 2020-10-12 20:23:02 · 186 阅读 · 1 评论 -
17.多线程(2)
8.定时器定时器可以用于比如系统每周删除一次日志文件,或者在指定日期关闭系统。定时器类import java.util.TimerTask;/** * 定时器 * 用于给线程任务定时操作 * */public class MyTask extends TimerTask{ @Override public void run() { for (int i = 0; i <= 10; i++) { System.out.println(Thread.curren原创 2020-10-12 20:19:17 · 184 阅读 · 0 评论 -
17.多线程(1)
多线程1.多线程定义每一个应用程序开启后都会开启一个进程,一个进程中可以开启多个线程完成不同的功能,比如qq开启一个进程,qq可以同时聊天、听音乐、看qq空间就是开启了多个线程来完成不同的任务。CPU在某一个时间片只能处理一个任务(线程),如果没有实现多线程,你的qq就应该先执行聊天任务,聊天任务结束才可以听音乐、听音乐任务结束后才可以打开qq空间,我们可以开启多线程,让cpu交替去执行这3个任务,由于cpu计算能力很强,让你感觉这3个任务在同时进行,这样的好处是提高了用户的体验度总结:有1,2,原创 2020-10-12 20:14:23 · 218 阅读 · 0 评论 -
20.xml解析
java的xml解析1.xml定义xml(Extensible Markup Language)可扩展标记语言;可以通过xml来存储数据,一般用于项目或者框架的配置信息特点:xml与操作系统、编程语言的开发平台无关实现不同系统之间的数据交换2.Java中xml的作用java项目中,xml文件一般都是用来存储一些项目的配置信息,不会键大量数据配置在xml中在我们后期需要学习的servlet中,我们需要通过配置web.xml文件实现一些任务的调度,或者我们后期需要学习的几乎所有是ja原创 2020-10-12 20:06:34 · 161 阅读 · 0 评论 -
19.反射
反射1.反射定义反射是框架的灵魂,什么是框架?我们之前写一些功能都是通过最底层的代码去实现这些功能,为了提高开发效率,公司里面都是需要用到框架去开发,所谓java框架就是通过java语言给你封装了一个半成品,那你基于这个框架平台去开发能够节省很多的代码提高工作的效率。基本上所有的开发语言都会有不同的框架,比如学习前端我们最底层javascript,基于javascript的框架vue、jquery、bootstrap等等,java的框架比如现在流行的ssm、springboot、sprin原创 2020-10-12 20:05:21 · 122 阅读 · 0 评论 -
16.网络编程
网络编程1.socket定义旺旺即时通讯工具、QQ、微信、即时通讯大多数都是通过socket网络编程机制实现的,我们想实现网络的通讯,计算机网络编程是一个实现客户端和服务器端通过一个双向链路进行数据交换的复杂的过程,该过程必须经过三块,分别是:客户端、通信链路、服务器端。为了更好的理解该过程,我们可以将该过程比喻成手机和电脑通过USB数据线进行传输数据的过程,客户端相当于手机,数据链路相当于USB数据线,而电脑相当于服务器。socket也叫套接字,相当于数据线两端的插头,java socket是实现原创 2020-10-12 20:03:30 · 173 阅读 · 0 评论 -
14.IO
IO流1.定义:IO流(input/output):对文件的输入和输出流,从内存写入到磁盘就是输出流,从磁盘的文件写入到内存中就是输入流((以程序为参照物)。2.File类的操作import java.io.File;import java.io.IOException;public class FileTest { public static void main(String[] args) { File file = new File("D:\\wu.txt"); FileT原创 2020-09-16 19:52:46 · 99 阅读 · 0 评论 -
12.实用类(总)
实用类1.包装类1.1 定义包装类是把基本类型转换为对象,是引用类型1.2作用包装类可以有很多操作的方法之前我们学习的集合比如add(1)在底层中会转换成包装类型integer类型插入到集合容器中,集合里面插入的都是引用类型。1.3 包装类型继承关系图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YZClMbBi-1600158779378)(D:\downfile\QQ\tu1 (1)].png)1.4 构造方法创建包装类型在构造方法中可以将原创 2020-09-15 16:33:15 · 241 阅读 · 0 评论 -
12.常用类之包装类
实用类1.包装类1.1 定义包装类是把基本类型转换为对象,是引用类型1.2作用包装类可以有很多操作的方法之前我们学习的集合比如add(1)在底层中会转换成包装类型integer类型插入到集合容器中,集合里面插入的都是引用类型。1.3 包装类型继承关系图1.4 构造方法创建包装类型在构造方法中可以将与之对应的基本数据类型作为构造方法参数,来创建包装类的对象charcater除外,在构造方法中可将对应的基本类型以字符串类型作为构造方法参数,来创建包装类的对象/** *原创 2020-09-14 22:12:55 · 347 阅读 · 0 评论 -
11.泛型
泛型1.背景java推出泛型以前,程序员可以构建一个元素类型为object类型的集合,该集合能够存储任何的数据类型的对象,而在使用该集合的过程中,需要程序员明确知道每个元素的数据类型,否则很容易引发ClassCastException异常,那通过泛型我们就能够约束集合插入的类型,那么该集合的所有元素都必须是此类型,那么就不需要进行object类型转换。import java.util.ArrayList;import java.util.Iterator;import java.util.Li原创 2020-09-14 22:08:57 · 546 阅读 · 0 评论 -
11.集合之总结
1 collections工具类案例1:自然排序import java.util.ArrayList;import java.util.Collections;import java.util.List;public class Test { public static void main(String[] args) { //所有的集合插入的元素必须是引用类型,Integer类型是int类型的包装类,是int类型的引用类型 List<Integer> lists =原创 2020-09-12 20:08:29 · 252 阅读 · 0 评论 -
11.集合之map
map接口下的集合map接口下的集合采用键值对Map<k,v>的存储方式,保存具有映射关系的数据。因此map集合里保存两组值,一组用于保存map里的key值,另外一组用于保存map里的value值,key和value可以是任意引用类型的数据。key值不允许重复,键可以为null,如果添加key-value键值对时已经有重复的key,则添加的value会覆盖key原来对应的value值.常用的实现类有HashMap、LinkedHashMap、TreeMap等。HashMap是以hash算法原创 2020-09-12 20:06:28 · 278 阅读 · 0 评论 -
11.集合之set
setset接口用于存储无序并且元素不可重复的集合,如下图:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3e4grplS-1599911871739)(D:\downfile\QQ\tu2.png)]set接口常用的实现子类有HashSet、LinkedHashSet、TreeSet类等。1 HashSetHashSet是set集合中最常用的实现类,HashSet是按照哈希算法来存储的,因此具有很好的存取和查找性能。HashSet特点:无原创 2020-09-12 20:02:02 · 250 阅读 · 0 评论 -
1.单例模式
单例模式1.定义所谓单例,就是整个程序有且仅有一个实例。该类负责创建自己的对象,同时要确保只有一个对象被创建。好处:就是一个类你只能创建一个实例对象可以节约内存开销,一般常用于在工具类的实现(之前的静态方法也可以用于工具类的实现)。2.特点构造器私有持有自己类的属性对外提供获取实例的静态方法一般单例模式分为两大类:懒汉模式,饿汉模式.详细分其实有懒汉,饿汉,双检锁,内部类,枚举。3.懒汉模式/** * 懒汉模式,延迟初始化,在调用方法获取的时候才会实例对象 * 线原创 2020-09-12 19:56:09 · 106 阅读 · 0 评论 -
11.集合之List
集合1.定义1.集合可以看作是一种容器,用来存储对象信息的容器,并且长度是可变的。因为对象是可以创建无限个数的,而对象数组是开辟固定长度的存储空间,显然用对象是不合适的对象数组长度不可变化并且无法保存具有映射关系的数据;集合可以用于存储数量不确定的数据,长度可变,以及可以保存具有映射关系的数据数组元素既可以是基本类型的值,也可以是对象;集合只能保存对象(比如list集合add(1)方法,是把1变成包装类Integer包装类)所有的集合继承关系图(虽然很全,但是我们不是都要掌握,原创 2020-09-08 21:36:23 · 1269 阅读 · 0 评论 -
12.日志
日志1.定义作用:用于记录应用程序的执行过程或异常等记录在文件,可以通过日志文件知道应用程序的操作或异常信息。对于一个应用程序来说日志记录是必不可少的一部分。线上问题追踪,基于日志的业务逻辑统计分析等都离不日志。java领域存在多种日志框架,目前常用的日志框架包括Log4j 1,Log4j 2,CommonsLogging,Slf4j,Logback,Jul。日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:原创 2020-09-07 19:17:34 · 166 阅读 · 0 评论 -
7.方法、常量、内部类和枚举
方法1.定义把代码逻辑细节用方法封装起来,通过对象能够重复调用方法,代码复用,提高工作效率。//行为:叫做方法。 public void study() { System.out.println("学习"); }2. 方法种类无返回值的无参方法//void代表无返回值//()中写写形参,空代表没有参数public void game() { System.out.println("游戏"); }无返回值的有参方法//方法中有参赛,为形参public void原创 2020-09-04 21:09:28 · 155 阅读 · 0 评论 -
13.异常
异常1.定义java编程语言使用异常处理机制为程序提供了错误处理的能力,程序出现错误,程序安全退出的机制。java是采用面向对象的方式来处理异常的。处理过程:抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行 路径,并把异常对象提交给jre。捕获异常:jre得到该异常后,寻找相应的代码来处理该异常。jre在方法的调用栈中查找,从生成异 常的方法开始回溯,直到找到相应的异常处理代码为止。2.异常继承关系图:error:是程序无原创 2020-09-02 21:58:07 · 162 阅读 · 0 评论 -
10.接口
接口1.定义接口是一种能力,在接口中对方法做具体的定义,但是不去做具体的实现,通过子类实现接口的抽象方法做具体的实现,优势:扩展性更强接口是抽象类实体,因为类是单继承关系,所以可以通过多实现接口拥有更多的父类.接口和抽象类的区别:抽象类中可以有属性,可以有抽象方法,构造方法,普通方法,接口中没有属性,都是public static final修饰的常量,都是public abstract修饰的抽象方法抽象类和接口都不能被实例化类可以单独继承类.也可以单独实现接原创 2020-09-01 15:05:17 · 178 阅读 · 0 评论 -
9.oop之多态
多态1. 定义同一个引用类型,使用不同的实例而执行的操作,实现多种形态。创建一个对象以父类类型接收,因创建的实例不同,而表现出不同的形态,多态一定要在继承关系下的方法重写的情况下才能实现。2.多态有两种体现方式2.1、使用父类作为方法的形参实现多态示例:通过食堂给不同的人打饭,方式和价格都不同父类person类/** * 父类-人类 * @author Administrator * */public abstract class Person { String原创 2020-08-29 19:42:32 · 472 阅读 · 0 评论 -
6.1对象数组
对象数组1.定义将对象作为一个数组来应用2.示例创建实例类Studentpublic class Student { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } publi原创 2020-08-26 16:28:07 · 146 阅读 · 0 评论 -
8.oop之继承
继承1.概念子类继承父类,就可以拥有父类的属性和方法,私有的除外.属于单继承关系,一个类只能继承一个父类.把多个子类共有的属性和方法抽取出来放到父类里面,提供给子类使用,私有的除外.优点:代码重用,提高了工作效率,扩展性变强.父类叫基类,也叫超类。子类也叫派生类。示例:(1)父类-人类/** * 父类 人类 * * */public class Person { private String name; private int age; private原创 2020-08-22 12:07:59 · 361 阅读 · 0 评论 -
7.方法
方法1.定义把代码逻辑细节用方法封装起来,通过对象能够重复调用方法,代码复用,提高工作效率。//行为:叫做方法。 public void study() { System.out.println("学习"); }2. 方法种类无返回值的无参方法//void代表无返回值//()中写写形参,空代表没有参数public void game() { System.out.println("游戏"); }无返回值的有参方法//方法中有参赛,为形参public void原创 2020-08-22 12:06:43 · 176 阅读 · 0 评论 -
6.oop面向对象编程
oop1.定义oop:object oriented programing 面向对象编程之前:面向过程:把一个项目放在一个类中去写,把一个事件一步一步去执行。弊端:代码都在一个类,自上而下,代码耦合度高,后期扩展功能和维护的成本很高代码自上而下执行,代码复用性不高代码复用,提高工作效率,节约了成本就是好技术所有提出了面向对象面向对象:以对象为核心,把这个事件分析出两个对象,通过调用重复的调用其功能。2.类和对象类:把相同的属性和方法归为一类,类里面有属性和方法。抽象的概原创 2020-08-22 12:03:40 · 181 阅读 · 0 评论 -
java数组
数组1. 定义数组就是同一类型的一组数的有序集合,并且个数有限。2. 定义数组步骤:声明int[] a;//在栈内存中开辟,用于存放数组在堆内存中的地址开辟空间a[] = new int[5];赋值a[1] = 10;使用a[1]+=a[1];3.案例案例1计算平均分(数组增加) public static void main(String[] args) { int b[] = new int[] {1,2,3,4,5}; int sum原创 2020-08-15 15:38:45 · 147 阅读 · 0 评论 -
java循环结构
循环结构定义:在特定的条件下重复的去做一件事1. while语句先判断,后执行 //循环必要条件:1..起始值2..循环条件3..循环体(满足条件执行的代码)4..迭代 //输出十遍我很帅 int n = 1; while(n <= 10) { System.out.println("我很帅!第" + n + "遍。"); n++; } System.out.println("========================"); //输出10—1 in原创 2020-08-12 07:52:25 · 179 阅读 · 0 评论 -
java选择结构
选择结构1. 定义 用于选择和判断,进行流程控制2. if结构单if语句int money=20; if(money>100) { System.out.println("吃肯德基!"); }else{ System.out.println("吃炒粉!"); }多重if语句Scanner input=new Scanner(System.in); System.out.println("请输入分数:"); int score=input.nextInt(原创 2020-08-09 17:00:50 · 202 阅读 · 0 评论 -
变量与常量
变量1. 定义变量本质上是在计算机内存中代表一个“可操作的存储空间”,空间位置是确定的,但是里面存放的值是不确定的,可以通过变量名来访问“对应的空间”,从而操作这个“存储空间”存储的值。java是一个强类型语言,每个变量都必须声明其数据类型,变量的数据类型决定了变量占据存储空间的大小。2. 变量类型 变量类型分为基本类型和引用类型基本类型intbyteshortlongfloatdoublecharboolean除了基本类型都是引用类型3. 变量种类局部变原创 2020-08-09 16:12:21 · 189 阅读 · 0 评论 -
jdk与eclipse的安装与使用
jdk安装与环境配置1.下载官网地址:https://www.oracle.com/cn/downloads/2. 安装3.配置环境配置步骤:计算机点击右键 ->属性–>高级系统设置–>环境变量新建系统变量,设置一个JAVA_HOME目录,注意不要去设置用户变量,如果设置的是用户变量只是针对该用户生效。设置Path目录测试是否安装成功cmd进入DOS命令:Java -version回车看是否显示java版本:如图4.常原创 2020-08-09 15:44:36 · 449 阅读 · 0 评论 -
java窗口
java对象练习java窗口import java.awt.*;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import static java.awt.Color.*;public class TestFrame { public static void main(String[] args) { Frame frame = new Frame("我的第一个java窗口!原创 2020-06-20 20:11:38 · 376 阅读 · 0 评论 -
java对象练习
对象练习通过输入学号,打印学生信息package wu.Demo01;import java.util.Scanner;public class Server { public static void main(String[] args) { Student s1 = new Student(); Student s2 = new Student(); Student s3 = new Student(); Stude原创 2020-06-19 20:07:19 · 180 阅读 · 0 评论 -
java对象初识
java对象初识面向对象&面向过程面向过程思想步骤清晰简单,第一步做什么,第二步做什么······面对过程适合处理一些较为简单的问题面向对象思想物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节面向过程的思索。面向对象适合处理复杂的问题,适合处理多人协作的问题。对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。原创 2020-06-18 20:45:09 · 134 阅读 · 0 评论 -
数组(2)
java数组(2)数组的使用for-Each循环public static void main(String[] args){ intv [] arrays = {1,2,3,4,5}; for(int array ; arrays){ System.out.println(array); } }数组作方法入参数组作返回值//反转数组public static int[] reverse(int[] arrays){原创 2020-06-17 22:37:36 · 227 阅读 · 0 评论 -
数组(1)
java数组(1)数组的定义数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据元素,按照一定的先后次序排列组合而成。其中,每一个数据称作一个数组元素,每个元素可以通过一个下标来访问它们。数组的声明和创建首先必须声明数组变量,才能在程序中使用数组。dataTYPE[] arrayREFvar;//首选的方法或ataTYPE arrayREFvar[];//效果相同,但不是首选方法java语言使用new操作符来创建数组。dataTYPE[] arrayREFvar原创 2020-06-15 21:59:26 · 182 阅读 · 0 评论 -
java方法初识
java方法初识方法的定义和调用方法的定义:方法包含一个方法头和一个方法体修饰符 返回值类型 方法名(参数类型 参数名){ ··· 方法体 ··· return 返回值;}修饰符:修饰符,这是可选的,告诉编译器如何调用方法,定义了该方法的访问类型。返回值类型:方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType是关键字void。方法名:是方法的实际名称。方法名原创 2020-06-14 22:19:20 · 118 阅读 · 0 评论 -
java控制流程
java流程控制Scanner()语句用法:用于用户交互基本语法Scanner scanner = new Scanner(System.in);通过Scanner类的next()与nextLine()方法获取输入的字符串,在使用前我们一般用hasNext()与hasNextLine()判断是否还有输入的数据。使用next方式接取Scanner scanner = new Scanner(System.in);System.out.println("使用next方式接受原创 2020-06-13 22:27:47 · 149 阅读 · 0 评论