自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 Stream流

package com.wcs.demo2; import java.util.ArrayList;import java.util.stream.Stream;/*** Stream流中的常用方法 */public class StreamTest03 { public static void main(String[] args) { //forEach方法,用来遍历流中的数据 //是一个终结方法,遍历之后就不能继续调用Stream流中的其他方法

2021-09-17 19:41:23 114

原创 Lambada表达式

package com.wcs.demo1;/** * 不使用Lambda表达式 */public class MyRunable { public static void main(String[] args) { //创建Runnable接口的实现类对象 MyRunableImpl run = new MyRunableImpl(); //创建Thread类对象,构造方法中传递Runnable接口的实现类 Thread

2021-09-16 14:34:57 228

原创 Java注解

package com.wcs.annotation;/** * 注解,或者叫做注释类型:Annotation * 注解Annotation是一种引用数据类型,编译之后也是生成class文件 * 自定义注解 * [修饰符列表] @interface 注解名{} */public class AnnotationTest01 { @MyAnnotation private int no; @MyAnnotation public AnnotationTest0

2021-09-15 17:28:59 127

原创 反射机制概述

1、反射机制概述1.1、反射机制有什么用?​ 通过Java语言中的反射机制可以操作字节码文件(class文件)。1.2、反射机制相关的类在哪个包下?​ 反射机制在java.lang.reflect.*包下。1.3、反射机制相关的重要的类有哪些?​ java.lang.class:代表整个字节码,代表一个类型。​ java.lang.reflect.Method:代表字节码中的方法字节码。​ java.lang.reflect.Constructor:代表字节码中的构造方法字节码。​ jav

2021-09-13 21:26:36 156

原创 多线程概述

1、线程概述什么是进程?什么是线程?​ 进程是一个是一个应用程序(1个进程是一个软件)。​ 线程是一个进程中的执行场景\执行单元。​ 一个进程可以启动多个线程。在Java语言中,线程A和线程B,堆内存和方法区共享。但是栈独立,一个线程一个栈。假设启动10个线程,会有10个栈空间,每个栈和每个栈之间,互不干扰,各自执行各自的,这就是多线程并发。Java中之所以有多线程机制,是为了提高程序的处理效率。2、实现线程Java语言中,实现线程有三种方式:2.1 继承Thread​ 第一种:编写一

2021-09-10 14:12:11 117

原创 IO流概述

什么是IO流?​ I:Input​ O:Output通过IO可以完成硬盘文件的读和写。IO流的分类?有多种分类方式:​ 一种是按照流的方向分类:​ 往内存中去,叫做输入(Input)。或者叫做读(Read)。​ 从内存里出来,叫做输出(Output)。或者叫做写(Write)。​ 另一种是按照读取数据方式不同进行分类:​ 有的流是按照字节的方式读取数据,一次读取1个字节byte,等同于一次读取8个二进制。这种流是万能的,什么类型的文件都可以读取,包括:文本文件,图片,声音文件,视频

2021-09-08 20:03:02 112

原创 Map接口概述

1 Map接口Map和Collection没有继承关系Map集合以key和value的方式存储数据:键值对​ key和value都是引用数据类型。​ key和value都是存储对象的内存地址。​ key起主导作用,value是key的附属品。Map接口中的常用方法:V put(K key,V value);向Map集合中添加键值对V get(Object key);通过Key获取valuevoid clear();清空Map集合boolean containsKey(Object ke

2021-09-05 21:16:45 218

原创 自定义类型怎么实现Comparable接口

自定义类型怎么实现Comparable接口//年龄降序import java.util.TreeSet;public class ComTest01 { public static void main(String[] args) { TreeSet<Person> tr = new TreeSet<>(); tr.add(new Person(12)); tr.add(new Person(23));

2021-09-04 15:17:18 339

原创 Java泛型机制

JDK5.0之后推出新特性:泛型。泛型这种语法机制,只在程序编译阶段起作用,只是给编译器参考的。(运行阶段泛型没用)使用泛型的好处?​ 第一:集合中存储的元素类型统一了。​ 第二:从集合中取出元素类型是泛型指定的类型,不需要大量的”向下转型“。泛型的缺点:导致集合中存储的元素缺乏多样性。import java.util.ArrayList;import java.util.Iterator;import java.util.List;/** *未使用泛型 * 从集合中取出元素需要进行

2021-09-03 16:15:52 62

原创 Set接口

1 Set接口1.1 HashSet哈希表是一种数据结构,哈希表能够提供快速存取操作。哈希表是基于数组的,所以也存在缺点,数组一旦创建将不能扩展。HashSet 中的数据是无序的不可重复的。HashSet 按照哈希算法存取数据的,具有非常好性能, 它的工作原理是这样的,当向 HashSet 中插入数据的时候,他会调用对象的 hashCode 得到该对象的哈希码,然后根据哈希码计算出该对象插入到集合中的位置.1.1.1 HashSet集合操作import java.util.HashSet;imp

2021-09-01 21:31:44 50

原创 List接口

List 接口下面主要有两个实现ArrayList 和LinkedList,他们都是有顺序的,也就是放进去是什么顺序,取出来还是什么顺序,也就是基于线性存储,可以看作是一个可变数组ArrayList:查询数据比较快,添加和删除数据比较慢(基于可变数组)LinkedList:查询数据比较慢,添加和删除数据比较快(基于链表数据结构)Vector:Vector 已经不建议使用,Vector 中的方法都是同步的,效率慢,已经被 ArrayList取代Stack 是继承Vector 实现了一个栈,栈结构是后进

2021-08-31 15:49:53 72

原创 Collection接口概述

1、Collection中能存放什么元素?​ 没有使用”泛型之前“,Collection中可以存储Object的所有子类型。​ 使用了泛型之后,Collection中只能存储某个具体的类型。2、Collection中的常用方法​ boolean add(Object e);向集合中添加元素​ int size();获取集合中元素的个数​ void clear();清空集合​ boolean contains(Object o);判断集合中是否包含元素…​ boolean remove(Ob

2021-08-30 15:17:48 94

原创 Java异常

1 异常的基本概念什么是异常,在程序运行过程中出现的错误,称为异常。int a = 10;int b = 0;int c = a / b;//error:ArithmeticExceptionSystem.out.println(c);Java给我们提供了这样一个体系结构,当出现问题的时候,它会告诉我们,并且把错误的详细信息也告诉我们了,这就是异常的体系结构,这样我们的程序更健壮,我们可以把这个信息,再进行处理以下告诉用户。public class ExceptionTest02 {

2021-08-29 16:54:05 112

原创 枚举数据类型

枚举编译之后也是生成class文件。枚举也是一种引用数据类型。枚举语法:​ enum 枚举类型名{​ 枚举值1,枚举值2}结果只有两种情况的,建议使用布尔类型。结果超过两种并且还是可以一枚一枚例举出来的,建议使用枚举类型。public class EnumTest01 { public static void main(String[] args) { Result r = divide(10,2); System.out.println(r == R

2021-08-28 13:32:57 414

原创 基本数据类型对应的8个包装类

Java中为8中数据类型准备了8中对应的包装类型,是属于引用类型,父类是Object。以Integer为例public class IntegerTest01 { public static void main(String[] args) { Integer integer = 12; sum(12); } public static void sum(Object obj) { System.out.println(obj);

2021-08-26 17:35:15 220

原创 StringBuffer

因为Java字符串是不可变的,每一次拼接都会产生新的字符串,这样会占用大量的方法区内存,造成内存空间的浪费。String s = "abc";s += "hello";//以上两行代码就导致在方法区字符串常量池中创建了3个对象//"abc" "hello" "abchello"如果以后需要大量字符串拼接的工作,建议使用StringBuffer、StringBuilder。StringBuffer 称为字符串缓冲区,它的工作原理是:预先申请一块内存,存放字符序列,如果字符序列满了,会重新改变缓存

2021-08-25 11:23:58 80

原创 String类

String表示字符串,属于引用数据类型,不属于基本数据类型;在Java中使用双引号括起来的都是String对象,是不可变的;使用双引号括起来的字符串,都是直接存储在“方法区”的“字符串常量池”中,因为字符型在实际开发中使用太频繁,为了执行效率所以把字符串放到了字符串常量池当中;//在字符串常量池中有三个字符串String s1 = "abcd";String s2 = "xyz" + "mn";String s1 = "hello";//"hello"是存储在方法区的字符串常量池当中.

2021-08-24 14:39:21 79

原创 匿名内部类

内部类概述什么是内部类?​ 在类的内部又定义了一个新的类。被称为内部类。内部类的分类:​ 静态内部类:类似于静态变量​ 实例内部类:类似于实例变量​ 局部内部类:类似于局部变量public class ClassTest { //这些类在类的内部,所以被称为内部类 //静态内部类 static class Inner1 { } //实例内部类 class Inner2 { } public void test() {

2021-08-23 14:12:36 1233

原创 Object类

任何一个类默认继承Object。就算没有直接继承,最终也会间接继承。什么是API?应用程序编程接口。整个jdk的类库就是一个JavaSE的API。每个API都会配置一套API帮助文档。toString()方法toString()方法的默认实现是:类名@对象的内存地址转换为十六进制的形式。toString()方法的作用是通过调用这个方法可以将一个Java对象转换成字符串形式。public class ToStringTest { public static void main(Strin

2021-08-22 16:31:42 53

原创 访问控制权限

访问控制权限有哪些?private 私有的protected受保护的public公共的默认以上4个访问控制权限:控制范围是什么?​ private 表示私有的,只能在本类中访问​ public 表示公开的,在哪里都可以访问public class User { //私有的 只能在本类中访问 private String name; //受保护的 protected int age; //公共的 public int id;}class

2021-08-21 10:10:00 153

原创 接口的进一步应用

1 接口可以使用多态//定义一个Animal接口public interface Animal { //抽象方法move() void move();}//Cat类实现接口Animalclass Cat implements Animal { //覆盖move()方法 public void move() { System.out.println("猫在走猫步"); }}//Bird类实现接口Animalclass Bird imple

2021-08-20 08:17:22 64

原创 接口基础语法

接口的基础语法1 接口概述接口也是一种引用数据类型。编译之后也是一个class字节码文件。接口我们可以看作是抽象类的一种特殊情况,在接口只能定义抽象的方法和常量。在Java中接口采用interface声明接口的默认方法都是public abstract的,不能修改,可以省略接口中的变量默认都是public static final类型的,不能更改(可以省略),所以必须显示的初始化接口不能被实例化,接口中没有构造函数的概念接口之间可以继承,但接口之间不能实现接口中的方法只能通过类来实现,通

2021-08-18 10:46:29 330

原创 package和import

package和import1 package包其实就是目录,特别是项目比较大,Java文件特别多的情况下,我们应该分目录管理,在 Java中称为分包管理,不同功能的类分别存放在不同的包下。package是一个关键字,后面加包名。注意:package语句只允许出现在Java源代码的第一行,注释除外。包名命名规范:​ 包名称通常采用小写字母​ 包的命名应该有规则,不能重复,一般采用公司网站逆序, 如:com.wcs.项目名称.模块名称package com.wcs.part01;publi

2021-08-17 15:18:08 3065 1

原创 Java抽象类

抽象类1 抽象类概述抽象类也属于引用数据类型;采用abstract声明抽象类;抽象的方法只需在抽象类中,提供声明,不需要实现,起到了一个强制的约束作用,要求子类必须实现;如果这个类是抽象的,那么这个类被子类继承,抽象方法必须被覆盖。如果在子类中不覆盖该抽象方法,那么必须将此方法再次声明为抽象方法;抽象的类不能实例化;抽象类不能被final修饰;抽象方法不能被final修饰。2 采用abstract声明抽象类抽象类中可以有抽象方法,也可以没有抽象方法。但是抽象方法必须是在抽象类中。语

2021-08-16 14:13:58 184

原创 final 关键字

final 关键字1 final关键字采用final 修饰的类不能被继承采用final 修饰的方法不能被覆盖采用final 修饰的变量不能被修改final 修饰的变量必须显示初始化如果修饰的引用,那么这个引用只能指向一个对象,也就是说这个引用不能再次赋值, 但被指向的对象是可以修改的构造方法不能被final 修饰final一般修饰静态常量,被修饰的常量名建议大写,每个单词之间采用下划线衔接:static final String COUNTRY = "中国";static final

2021-08-14 14:49:29 68

原创 super关键字

super1 super是什么严格来说,super 其实并不是一个引用,它只是一个关键字,super 代表了当前对象中从父类继承过来的那部分特征。例如父亲又眼睛鼻子,儿子继承了父亲的眼睛鼻子,但是儿子的眼睛鼻子还是长在儿子身上,如果this指的是儿子,那么super就是儿子身上的眼睛鼻子,super只是对它进行了标记,所以说"this.眼睛"(儿子的眼睛)等同于"super.眼睛"(儿子的眼睛)。super和this都可以使用在实例方法中。不能共存。super不能使用在静态方法当中,因为super代

2021-08-13 10:28:17 75

原创 方法覆盖与多态

方法覆盖与多态1 方法覆盖1.1 什么是方法覆盖在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。1.2 什么时候使用方法覆盖当从父类中继承过来的方法无法满足当前子类业务需求的时候,需要将父类中继承过来的方法进行覆盖。换句话说,父类中继承过来的方法已经不够用了,子类有必要将这个方法重新再写一遍,所以方法覆盖又被称为方法重写。当该方法被重写之后,子类对象一定会调用重写之后的方法

2021-08-12 11:41:20 524

原创 Java继承

继承1 什么是继承继承是面向对象三大特征之一,封装居首位,封装之后形成了独立体,独立体A和独立体B之间可能存在继承关系。生活中的继承:继承时子类继承父类的特征和行为,使得子类对象(实例)具有父类的属性,或子类从父类继承方法,使得子类具有与父类相同的行为。从上图来看,虽然食草动物和肉食动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也会具有自身的特性。为什么要使用继承?​ 在不同的类中也可能会有共同的特征和动作,可以把这些共同的特征和动作放在一个类中,让其他类共享。因

2021-08-11 12:44:24 354

原创 this和static

this和static1 this1.1 this概述this是一个关键字,全部小写。一个对象是一个this。this是一个变量,是一个引用。this保存当前对象的内存地址,指向自身。所以严格意义上来说,this代表的就是“当前对象”,this存储在堆内存当中对象的内部。this只能使用在实例方法中。谁调用这个实例方法,this就是谁。所以this代表的是:当前对象。this大部分情况下是可以省略的。this不能用在静态方法中,因为this代表当前对象,静态方法中不存在当前对象。1.2

2021-08-09 19:28:13 270

原创 Java封装

Java封装1 什么是封装?有什么用?封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互。也就是说用户是无需知道对象内部的细节,但可以通过该对象对外提供的接口来访问该对象。封装之后就形成了独立实体,独立实体可以在不同的环境中重复使用,显然

2021-08-08 15:45:02 172

原创 认识面向对象

1 认识面向对象1.1 初始面向对象和面向过程(了解)面向过程的开发方式主要的特点:注重步骤,注重的是实现这个功能的步骤。另外面向过程也注重实现功能的因果关系。面向过程有什么缺点?面向过程最主要是每一步与每一步的因果关系,其中A步骤因果关系到B步骤,A和B联合形成一个子模块,子模块和子模块之间又因为因果关系结合在一起,假设其中任何一个因果关系出现问题,此时整个系统的运转都会出现问题。(代码和代码之间的耦合度太高,扩展力太差)面向过程有什么优点?对于小型项目,采用面向过程的方式进行开发,效率较高

2021-08-07 08:52:23 76

原创 方法调用、重载、递归

1 方法定义[修饰符列表] 返回值类型 方法名(形式参数列表){方法体;}例如代码:public static void sumInt(int a , int b){ int c = a + b; System.out.println(a + "+" + b + "=" + c);}public static是修饰符列表;void是返回值类型;sumInt是方法名;(int a , int b)是形式参数列表,简称形参,每一个形参都是局部变量;形参后面使用一对儿大括号括起来的是方

2021-08-06 10:17:36 184

原创 Java数组基本知识

数组1 数组概述Java语言中的数组是一种引用类型。不属于基本数据类型。数组的父类是Object。数组实际上是一个容器,可以同时容纳多个元素。(数组是一个数据的集合。) 数组:字面意思是”一组数据“。数组当中可以存储”基本数据类型“的数据,也可以存储”引用类型“的数据。数组因为是引用类型,所以数组对象是堆内存当中。(数组是存储在堆当中的)。数组当中如果存储的是”Java对象“的话,实际上存储的是对象的”引用(内存地址)“。数组一旦创建,在Java中规定,长度不可变。(数

2021-08-05 15:54:35 215

原创 Java控制语句

Java控制语句控制语句即用来实现对程序流程的选择、循环、转向和返回等进行控制。1 选择语句1.1 Java选择语句if//第一种if(布尔表达式){ Java语句; }//第二种if(布尔表达式){ Java语句; }else{ }//第三种if(布尔表达式){ Java语句; }else if(布尔表达式){ Java语句;}else if(布尔表

2021-08-04 14:39:57 240

原创 Java程序输入与输出方式

Java程序输入与输出方式1 输入方式1.1 Scanner类输入import java.util.Scanner;/** * @author wcs * @date 2021/7/29 20:09 */public class InputTest01 { public static void main(String[] args) { //Scanner类输入 Scanner s = new Scanner(System.in);

2021-07-30 20:57:44 487

原创 Math工具类

Math工具类/** * @author wcs * @date 2021/7/29 19:32 */public class MathTest01 { public static void main(String[] args) { double pi=Math.PI; System.out.println(pi); //随机出一个0~1的double类型数字 System.out.println(Math

2021-07-30 14:59:08 54

原创 随机工具类

随机工具类java.util.Randomimport java.util.Random;/** * @author wcs * @date 2021/7/29 19:07 */public class RandomTest01 { public static void main(String[] args) { //随机类Random Random rand = new Random(); //true false 真假随机

2021-07-30 08:52:21 89

原创 日期工具类

日期工具类import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;/** * @author wcs * @date 2021/7/29 16:14 */public class DateTest01 { public static void main(String[] args) { Date d = new Date(); //时间戳

2021-07-29 17:20:34 54

原创 Java字符串格式化

格式化输出 System.out.println(); System.out.print();输出错误信息以红色输出 System.err.println(“hello world”);格式化输出 System.out.printf();转换符说明示例%s字符串类型“hello”%c字符类型‘a’%b布尔类型true%d整数类型(十进制)10%f浮点类型10.00%n换行符%tx日期与时间类型(x代

2021-07-29 14:47:55 304

原创 Java运算符

Java运算符Java运算符概述:运算符是指明对操作数的运算方式。组成表达式的Java操作符有很多种(什么是操作数和操作符,例如1+2,其中1和2都是操作数,+是操作符,操作符和操作数联合起来构成表达式)。运算符按照其要求的操作数数目来分,可以有单目运算符(1个操作数)、双目运算符(2个操作数)和三目运算符(3个操作数)。运算符按其功能来分,有算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符、条件运算符、字符串连接运算符和其他运算符。常见的运算符如下表:算术运算符+、-、*、/、%(

2021-07-29 11:08:12 74

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除