JAVA基础
69岁老同志程序员
这个作者很懒,什么都没留下…
展开
-
JAVA基础——Lambda表达式
定义多线程的方法当需要启动一个线程去完成任务时,通常会通过java.lang.Runnable接口定义任务内容,并使用java.lang.Thread类来启动线程执行任务。// 实现Runnable接口定义任务内容public class MyRunnable implements Runnable{ @Override public void run() { for (int i=0;i<20;i++) { System.out.prin原创 2020-11-02 18:30:43 · 147 阅读 · 1 评论 -
JAVA基础--多线程及线程安全案例 等待与唤醒(生产者与 消费者)
等待与唤醒案例综合使用线程的条件对象和同步代码块来实现线程安全。以买卖包子为案例,顾客买包子,有则直接吃,没有包子则需等待制作包子,包子铺中有顾客需要包子并且包子库没包子则需制作,没顾客需要包子不制作包子。很明显有顾客线程以及包子铺线程,通过同步代码块对两个线程实现同步控制。包子类,设置包子的属性BaoZi.javaget、set方法已省略public class BaoZi { private String pi; private String xian; priv原创 2020-10-18 15:23:17 · 135 阅读 · 0 评论 -
JAVA基础--多线程、线程安全
线程与进程进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程我们可以再电脑底部任务栏,右键----->打开任原创 2020-10-13 22:22:13 · 361 阅读 · 1 评论 -
SpringMVC基础--上传问文件到服务器
提前配置好spring的前端控制器及视图解析器。传统的java文件上传依赖的jar包<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> <原创 2020-10-06 20:40:04 · 153 阅读 · 0 评论 -
JAVA基础--异常的包装技术
适用场景:1、在写一个项目时,越往底层,其抛出的异常越多,父类需要处理这些异常,如果要将每个异常都进行catch捕获太麻烦而且还的考虑异常类子父关系的问题,当然我们也可以直接捕获它们的超类IOException。我们可以自己创建一个异常类,将底层的异常进行封装,统一抛出新建的异常类,在捕获时只捕获该异常即可,也会输出所有的错误信息。2、如果在一个方法中发生了一个检查型异常(就是编译期异常),但这个方法不允许抛出检查型异常,那么包装技术也很有用。我们可以捕获这个检查型异常,并将它包装成一个运行时异常。3原创 2020-10-06 13:26:18 · 576 阅读 · 0 评论 -
JAVA基础--异常与处理方法
在java程序设计中,异常对象都是派生于Throwable类的一个实例。异常体系结构Throwable体系:Error:严重错误Error,无法通过处理的错误,只能事先避免,好比绝症。Exception:表示异常,异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处理的。好比感冒、阑尾炎。Exception体系:IOException:处于编译器期的异常需要我们来处理,如日期格式化错误,找不到文件位置。RuntimeException: 处于运行期的异常,JVM会自动进行原创 2020-10-05 22:49:52 · 129 阅读 · 0 评论 -
JAVA基础--动态代理
动态代理的作用:在不修改源码的基础上实现方法的加强。动态代码:特点:字节码随用随创建,随用随加载作用:在不改变源码的基础上,给方法增加功能分类:基于接口的动态代理基于子类的动态代理基于接口的动态代理基于接口的动态代理:涉及的类:Proxy提供者:JDK官方如何创建代理对象: 使用Proxy中的newProxyInstance方法创建代理对象的要求:被代理类至少实现一个接口,如果没有则不能创建newProxyInstance方法的参数: C原创 2020-08-25 10:22:52 · 211 阅读 · 0 评论 -
JAVA基础--可变参数
可变参数在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类型一致,我们可以对其简化成如下格式:修饰符 返回值类型 方法名(参数类型... 形参名){ }其实这个书写完全等价与修饰符 返回值类型 方法名(参数类型[] 形参名){ }只是后面这种定义,在调用时必须传递数组,而前者可以直接传递数据即可。JDK1.5以后。出现了简化操作。… 用在参数上,称之为可变参数。同样是代表数组,但是在调用这个带有可变参数的方法时,不用创建数组(这就是简单之处),直接将数组中的元素作原创 2020-08-19 18:20:24 · 160 阅读 · 1 评论 -
JAVA基础--Set集合
第四章 Set接口java.util.Set接口和java.util.List接口一样,同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,只是比Collection接口更加严格了。与List接口不同的是,Set接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。Set集合有多个子类,这里我们介绍其中的java.util.HashSet、java.util.LinkedHashSet这两个集合。tips:Set集原创 2020-08-19 18:19:17 · 136 阅读 · 0 评论 -
JAVA基础--List集合
第二章 List集合我们掌握了Collection接口的使用后,再来看看Collection接口中的子类,他们都具备那些特性呢?接下来,我们一起学习Collection中的常用几个子类(java.util.List集合、java.util.Set集合)。1.1 List接口介绍java.util.List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合。在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中原创 2020-08-19 10:59:16 · 107 阅读 · 0 评论 -
JAVA基础--Iterator迭代器和增强for循环
第二章 Iterator迭代器2.1 Iterator接口在程序开发中,经常需要遍历集合中的所有元素。针对这种需求,JDK专门提供了一个接口java.util.Iterator。Iterator接口也是Java集合中的一员,但它与Collection、Map接口有所不同,Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也被称为迭代器。Iterator接口的常用方法如下:public E next原创 2020-07-22 14:42:59 · 215 阅读 · 1 评论 -
JAVA基础--Collection集合
第一章 Collection集合1.1 集合概述在前面基础班我们已经学习过并使用过集合ArrayList ,那么集合到底是什么呢?集合:集合是java中提供的一种容器,可以用来存储多个数据。集合和数组既然都是容器,它们有啥区别呢?数组的长度是固定的。集合的长度是可变的。数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。1.2 集合框架JAVASE提供了满足各种需求的API,在使用这些AP原创 2020-07-22 13:49:45 · 129 阅读 · 0 评论 -
JAVA基础--包装类
包装类概述Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类,如下:基本类型对应的包装类(位于java.lang包中)byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoole原创 2020-07-15 08:49:27 · 141 阅读 · 0 评论 -
JAVA基础--StringBuilder类
StringBuilderString类型,是个常量,内容是不可变的,当对一个String类字符创操作时,会极大的浪费空间,而StringBuilder 是一个变量,可以对数据值操作可变。构造函数public StringBuilder()构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。public StringBuilder(int capacity)构造一个不带任何字符的字符串生成器,其初始容量由 capacity 参数指定。public StringBuilder(St原创 2020-07-10 19:48:06 · 199 阅读 · 0 评论 -
JAVA基础--Calendar类
Calendar类Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。常用的字段使用Calendar 是一个抽象类,Calendar 的 getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化。 Calendar cal = Calendar.getInstance();常用方法参数:fi原创 2020-07-10 10:41:58 · 167 阅读 · 0 评论 -
JAVA基础--DateFormat类以及SimpleDateFormat类
DateFormat类DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。抽象类是不能直接使用的,所以使用它的子类,SimpleDateFormat类。SimpleDateFormat类SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。使用SimpleDateFormat日期和时间模式示例:构造方法//原创 2020-07-10 09:32:36 · 225 阅读 · 0 评论 -
JAVA基础--Date类
简介类 Date 表示特定的瞬间,精确到毫秒。一些计算机标准是按照格林威治标准时 (GMT) 定义的,格林威治标准时和世界时 (UT) 是相等的。构造函数无参构造函数public Date()分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。// Date 无惨构造函数,获取当前时间 Date date01 = new Date(); System.out.println(date01); // Thu Jul 09 11:12:57 CST原创 2020-07-10 08:46:36 · 81 阅读 · 0 评论 -
JAVA基础--Scanner类
Scanner类的功能,可以实现键盘输入数据,到程序当中引用类的一般步骤为:1、导包import 包路径.类名称如果需要使用的目标类和当前类在同一个包下,则可以省略导报语句不写。注意:只有java.lang包下的内容不需要导包,其他都需要导包语句。2、创建类名称 对象名 = new 类名称();3、使用对象名,成员方法();实例:...原创 2020-07-08 10:53:51 · 249 阅读 · 0 评论 -
JAVA基础--Object类
toString()方法public String toString()返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。toString()方法,默认为返回对象的地址 Personal personal = new Personal("mcs");// 未重写toString()函数时,输出的是该对象的地址 System.out.println(personal); // advanced.day01_Object.原创 2020-07-08 22:08:43 · 116 阅读 · 0 评论 -
JAVA基础--多态、接口、抽象、转型、多态 (笔记本)案例
分析-笔记本类以USB为接口,间接的使用鼠标和键盘鼠标类和键盘类为对USB接口的实例类(1)定义USB接口public interface USB {// 打开设备public abstract void open ();// 关闭设别public abstract void close ();}(2)定义鼠标和键盘类,并进行实例------鼠标public class Mouse implements USB{@Overridepublic void open() {原创 2020-07-08 15:01:13 · 138 阅读 · 0 评论 -
JAVA基础--内部类
概念如果一个事物的内部包含另外一个事物,那么这就是一个类内部 包含另一个类。例如:身体很心脏的关系,又如,汽车和发动机的关系。分类:1、成员内部类2、局部内部类1、成员内部类—在外部类中直接定义内部类,格式为类的正常格式public class Body { // 外部类public class Heart {public void MethodInner () { // 内部类System.out.println(“内部类”);}}}—使用方法(1)间接调用,通过外部类的方原创 2020-07-08 14:55:04 · 100 阅读 · 0 评论 -
JAVA基础--多态
概念使用父类名称 对象名 = new 子类名称();或者接口名称 对象名 = new 实现类名称();public static void main(String[] args) {Fu obj = new Zi();obj.method();}多态中,成员方法的使用成员方法的访问规则是:看new的谁,就优先使用谁,没有则往上找成员变量:编译看左边,运行看左边 (父类中必须含有该变量)成员方法:编译看左边,运行看右边 父类中含有该方法使用多态的好处’对象的向上 转原创 2020-07-08 14:49:56 · 97 阅读 · 0 评论 -
JAVA基础--抽象类
概念实例抽象方法:就是在加上abstract关键字,然后去掉大括号,直接分号结束。抽象类: 抽象方法所在的类,必须是抽象类才行,在class之前写上abstract即可。如何使用抽象类和抽象方法1、不能直接创建new抽象类2、必须用一个子类来继承抽象父类3、子类必须重写父类当中的所有的抽象方法。覆盖重写(实现),子类去掉抽象方法中的abstract关键字,然后补上方法体大括号。4、创建子类对象进行使用创建抽象类:public abstract class animal {// 定原创 2020-07-08 14:46:16 · 91 阅读 · 0 评论 -
JAVA基础--接口
概念-接口就是多个类的公共规范。(就像全国使用的电源接口)-接口是一种引用数据类型,最重要的内容就是其中的抽象方法。如何定义一个接口:public interface 接口名称 {// 接口内容}备注:换成了interface之后,编译生成的字节码文件仍然是:.java --> .class如果是java 7, 那么接口中可以包含的内容有:1、常量2、抽象方法如果是java 8, 还可以额外包含:3、默认方法4、静态方法如果是java 9,还可以额外包含:5、私有方法原创 2020-07-08 11:52:00 · 123 阅读 · 0 评论 -
JAVA基础--继承
方法覆盖重写的主意事项:实例:通过super关键字来使用父类的方法或变量实现代码的复用@Overridepublic void show () {super.show();System.out.println("显示头像");System.out.println("电环号码");}父子关系的构造函数this 关键字的用法内存图解总结...原创 2020-07-08 11:42:01 · 87 阅读 · 0 评论 -
JAVA基础--权限修饰符
在Java中提供了四种访问权限,使用不同的访问权限修饰符修饰时,被修饰的内容会有不同的访问权限,public:公共的。protected:受保护的default:默认的private:私有的不同权限的访问能力可见,public具有最大权限。private则是最小权限。编写代码时,如果没有特殊的考虑,建议这样使用权限:成员变量使用 private ,隐藏细节。构造方法使用 public ,方便创建对象。成员方法使用 public ,方便调用方法。小贴士:不加权限修饰符,其访问能力与de原创 2020-07-08 11:24:29 · 75 阅读 · 0 评论 -
JAVA基础--final关键字
final 关键字代表最终、不可改变的额。常见的四种用法1、可以用来修饰一个类2、可以用来修饰一个方法3、还可以用来写修饰一个局部变量4、可以用来修饰一个成员变量1、修饰类(断子绝孙类)使用final修饰类,该类为断子绝孙类,不准许有子类,其方法也不能覆盖重写public final class finalClass {}2、修饰方法当final修饰方法时,该方法为最终方法,不能被覆盖重写格式:修饰符 final 返回值类型 方法名称(参数列表){ }public fina原创 2020-07-08 11:21:30 · 132 阅读 · 0 评论 -
JAVA基础--static关键字
Static 来修饰成员变量和成员方法1、statci来修饰成员变量在一个类中,静态成员变量,属于该类所有,而不是属于创建的对象所有,所有该类创建的对象共享该成员变量。2、static修饰成员方法同样,使用static修饰了成员方法,该方法属于类,不属于对象。如果没有statci关键字,那么必须创建对象,然后通过对象才能使用它。如果有了static关键字,那么不需要创建对象,直接通过类名称来使用它。MyClass obj = new MyClass();obj.methStatic();原创 2020-07-08 11:18:25 · 118 阅读 · 0 评论 -
JAVA基础--数学工具类
常用的数学工具类1、public static 指定类型 abs(指定类型 num); 获取绝对值2、public static 指定类型 ceil(指定类型 num); 向上取整3、public static 指定类型 floor(指定类型 num)(向下取整)4、public static long round(double num) 四舍五入// 取绝对值System.out.println(Math.abs(-100)); //100// 向上取正System.out.原创 2020-07-08 11:14:31 · 150 阅读 · 0 评论 -
JAVA基础--数组工具类Arrays
Arrays 此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。常用的方法1、将数组转换为默认格式的字符串public static String toString(数组) 将参数数组转换成字符串(默认格式: 【元素1,元素2】)int[] ints = {1,6,2};String str1 = Arrays.toString(ints);System.out.println(str1); //[1, 6, 2]2、public sta原创 2020-07-08 11:13:09 · 138 阅读 · 0 评论 -
JAVA基础--String类
一、字符串的几种构造方式二、字符串的常量池三、字符串比较函数俩个字符串比较函数1、public boolean eauals (Object obj);注意:尽量在比较时,以常量调用方法,“abc”.eauqals(str1);这种方法可以避免当str1.qauals(“abc”)这种方法中str1为空时报错2、public boolean equalsIgnoreCase(String str);忽略大小写的比较函数String str1 = "abc";String str2原创 2020-07-08 11:09:42 · 145 阅读 · 0 评论 -
JAVA基础--ArrayList类
ArrayList类,可以自动变长度的存放数据,由于数组的长度固定,所以引出来此类用于存储数据。使用方法:定义ArrayList E 代表泛型,所有存放ArrayList中的数据必须都为类型ArrayList<String> li = new ArrayList<String>();ArrayList 的常用方法public boolean add(E e) 向集合中添加元素,参数类型和泛型一致。备注:对于ArrayList集合来说,add动作一定会成功,所以返回值可原创 2020-07-08 11:02:29 · 237 阅读 · 0 评论 -
JAVA基础--Random类
Random 类用来产生一个随机数使用方法和Scanner一样原创 2020-07-08 10:57:21 · 127 阅读 · 0 评论 -
JAVA基础--基本数据类型转换
隐式类型转换1、特点:代码不需要进行特殊处理,自动完成。2、规则:数据范围从小到大进行转换。(从大到小转换不行)强制类型转换1、特点:代码需要进行特殊格式的处理,不能自动完成2、格式:范围小的类型 范围小的变量名 = (范围小的类型) 原本范围大的数据;public class DemoDataType { public static void main(String[] args) { int num = (int) 100L; System.out.p原创 2020-07-08 10:52:03 · 95 阅读 · 0 评论