- 博客(41)
- 收藏
- 关注
原创 Java基础三十四(集合)
一、集合框架的概述1.集合、数组都是对多个数据进行存储操作的结构,简称Java容器 说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化存储(.txt,.jpg,.avi,数据库)2.数组在存储多个数据方面的特点: >一旦初始化以后,其长度就确定了。 >数组一旦定义好,其元素的类型就确定了。只能操作指定类型的数据。 比如: String arr[];int[] arr1;Object[] arr2; 存在缺点: 长度不能修改 数组中提供的方法
2021-04-09 15:40:46
244
原创 Java基础三十三(枚举类和注解)
一、枚举类的使用 1.枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类 2.但需要定义一组常量时,强烈建议使用枚举类 3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式二、如何定义枚举类 方式一:jdk5.0之前,自定义枚举类 方式二:jdk5.0,可以使用enum关键字定义枚举类三、enum类常用方法 values()方法:返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值。 valueOf(String str):可以把一个字符串转为对应的枚举
2020-11-24 15:47:10
162
原创 Java基础三十二(比较器)
一、说明:Java中的对象,正常情况下,只能进行比较:== 或 !=。不能使用 > 或 < 在开发场景中,需要对多个对象进行排序,言外之意,需要比较对象的大小 如何实现?使用两个接口中的任何一个:Comparable或Comparator二、Comparable接口与Comparator的使用的对比: Comparable接口的方式一旦指定,保证Comparable接口实现类的对象都可以比较大小 Comparator接口属于临时性的比较。Comparable接口的使用举例:自
2020-11-22 20:02:29
236
原创 Java基础三十一(DateTime)
JDK8之前日期和时间的API测试1.System类中currentTimeMillis();2.java.util.Date和子类java.sql.Date3.SimpleDateFormat4.Calendar注意: 1.一月是0,12月是11 2.周日是1,周六是7java.util.Date类1.两个构造器的使用 //构造器一:Date():创建了一个对应当前时间的Date对象 //构造器二:创建指定毫秒数的Date对象2.两个方法的使用 >toStr
2020-11-22 17:52:40
358
原创 Java基础三十(StringBufferBuilder)
源码分析 String str = new String();//new char[0] String str1 = new String(“abc”);//new char[]{‘a’, ‘b’, ‘c’}; StringBuffer sb1 = new StringBuffer();//new char[16];底层创建了一个长度是16的数组。 sb1.append(‘a’);//value[0] = ‘a’; sb1.append(‘b’);//value[1]
2020-11-22 17:41:26
224
原创 Java基础二十九(String类)
String:字符串,使用一对“”引起来表示1.String声明为final的,不可被继承2.String实现了Serializable接口:表示字符串支持序列化 实现了Comparable接口:表示String可以比较大小3.String内部定义了final char[] value用于存储字符串数据4.String:代表不可变的字符序列(不可变性)。 体现: 1.当对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的value进行赋值 2.当对现有的字符串进
2020-11-22 17:03:09
134
原创 Java基础二十八(线程练习与补充)
线程通信的例子:使用两个线程打印1-100.线程一、线程二交替打印涉及到的三个方法: wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器 notify():一旦执行此方法,就会唤醒被wait的一个线程。如果有多个线程被wait,就唤醒优先级高的wait notifyAll():一旦执行此方法,就会唤醒被wait的所有线程注意: 1.上述三个方法只能使用在同步代码块或者同步方法中 2.上述方法的调用者必须是同步代码块或同步方法中的同步监视器,否则出现Illega
2020-11-19 21:28:24
77
原创 Java基础二十七(线程安全、Lock锁)
例子:创建三个窗口买票,总票数100张,使用Runnable接口的方式1.问题:卖票过程中,出现了重票、错票–>出现了线程的安全问题2.问题出现的原因:当某个线程操作车票的过程中,尚未操作完成时,其他线程参与进来,也操作车票3.如何解决:当一个线程a在操作ticket时,其他线程不能参与进来。直到线程a操作完成ticket时,其他线程才可以开始操作ticket。这种情况即使线程a出现了阻塞,也不能改变4.在java中,我们通过同步机制,来解决线程的安全问题。 方式一:同步代
2020-11-19 15:07:24
124
原创 Java基础二十六(线程)
多线程的创建一,方式一:继承于thread类1.创建一个继承于Thread类的子类2.重写Thread类的run()–>将此线程执行的操作声明在run()中3.创建Thread类的子类的对象4.通过此对象调用start():①启动当前线程 ②调用当前线程的run()例子:遍历100以内的所有的偶数public class TreadTest { public static void main(String[] args) { //3.创建Thread类的子类的对
2020-11-19 15:02:13
149
原创 Java基础二十五(异常处理)
一、异常体系结构java.lang.Throwable java.lang.Error:一般不编写针对性的代码进行处理 Exception:可以进行异常的处理 编译时异常(checked) IOException FileNotFoundException ClassNotFoundException 运行时异常(unchecked,RunTimeException) NullPointerException ArrayIndexOutOfBo
2020-11-18 10:04:59
165
原创 Java基础二十四(内部类)
类的内部成员之五:内部类1.Java中允许将一个类A声明在另一个类B中。则类A就是内部类。类B称为外部类2.内部类的分类:成员内部类(静态的、非静态的) vs 局部内部类(方法内、代码块内、构造器内)3.成员内部类: 一方面,作为外部类的成员: >调用外部类的结构 >可以被static修饰 >可以被四种不同的权限修饰 另一方面,作为一个类: >类内可以定义属性、方法、构造器等 >可以被final修饰
2020-11-15 21:22:27
95
原创 Java基础二十三(interface)
接口的使用1.接口的使用interface来定义2.Java中,接口和类是并列的两个结构3.如何定义接口:定义接口中的成员 3.1 JDK7及以前:只能定义全局常量和抽象方法 >全局常量:public static final。可以省略不写 >抽象方法:public abstract 3.2 JDK8:除了定义全局变量和抽象方法之外,还可以定义静态方法、默认方法4.接口中不能定义构造器,意味着接口不可以实例化5.Java开发中,接口都通过类去实现(im
2020-11-15 20:33:19
200
原创 Java基础二十二(abstract应用)
编写工资系统,实现不同类型员工(多态)的按月发放工资。如果当月出现某个Employee对象的生日,则将该雇员的工资增加100元。(1)定义一个Employee类,该类包括: private成员变量name,number,birthday,其中birthday为MyDate类的对象; abstract方法earnings(); toString()方法输出对象的name,number和birthday(2)Mydate类 private成员变量year,month,day; toDa
2020-11-15 15:57:58
213
原创 Java基础二十一(abstract)
abstract关键字的使用1.abstract:抽象的2.abstract可以用来修饰的结构:类、方法3.abstract修饰类:抽象类 >此类不能实例化 >抽象类中一定有构造器,便于子类实例化的时候调用 >开发中,都会提供抽象类的子类,让子类对象实例化完成相关操作4.abstract修饰方法:抽象方法 >抽象方法只有方法的声明,没有方法体 >包含抽象方法的类,一定是一个抽象类。抽象类中可以没有抽象方法。 >若子类重写父类
2020-11-15 15:53:27
122
原创 Java基础二十(final)
final:最终的1.final可以修饰的结构:类、方法、变量2.final用来修饰一个类:此类不能被其他类所继承 例如:String、System、类3.final用来修饰方法:表用此方法不能被重写 例如:Object类中的getClass()方法4.final修饰变量:此时的变量成为了常量,不能再修改 4.1 final修饰属性:可以考虑赋值的位置有:显示初始化、代码块中赋值、构造器中初始化 4.2 final修饰局部变量:尤其是使用final修饰形参时,表明此
2020-11-14 20:12:59
126
原创 Java基础十九(代码块)
类的成员之四:代码块(或者初始化快)1.代码块的作用:用来初始化类或者是对象2.代码块如果有修饰的话,只能有static3.分类:静态代码块、非静态代码块4.静态代码块: >内部可以有输出语句 >随着类的加载而执行,而且只执行一次 >作用:初始化类的信息 >如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行 >静态代码块的执行优先于非静态代码块的执行。 >静态代码块内只能调用静态属性或者方法,不能调用非静态结构
2020-11-14 19:37:19
104
原创 Java基础十八(main方法使用)
main()方法的使用说明1.main()方法作为程序的入口2.main()方法也是一个普通的静态方法3.main()方法可以作为与控制台交互的方式。(之前:使用scanner)public class MainTest { public static void main(String[] args) {//入口 Main.main(new String[100]); }}class Main{ public static void main
2020-11-14 16:46:31
217
原创 Java基础十七(单例设计模式)
单例设计模式所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例。实现方式: 饿汉式(先造对象) 懒汉式(用的时候造对象)区分饿汉式和懒汉式 饿汉式: 好处:线程安全。 坏处:对象加载时间过长。 懒汉式: 好处:延迟对象创建。 坏处:线程不安全。public class SingletonTest1 { public static void main(String[] args) {
2020-11-14 16:18:19
72
原创 Java基础十六(static)
static关键字使用1.static:静态的2.static可以用来修饰:属性、方法、代码块、内部类3.使用static修饰属性:静态变量(类变量) 3.1属性,按是否使用static修饰,又分为:静态属性、非静态属性(实例变量) 实例变量:创建了类的多个对象,每个对象都独立的拥有一套类中的非静态属性。当修改其中一个对象中的非静态属性时,不会导致其他对象中同样的属性值的修改。 静态变量:创建了类的多个对象,多个对象共享同一个静态变量。当通过某一个对象修改静态变量时,会导致其他对象调
2020-11-14 15:32:23
219
原创 Java基础十五(包装类)
java中的JUnit测试步骤:1.创建Java类,进行单元测试。此时的Java类要求:此类是public的、此类提供公共的无参的构造器2.此类中声明单元测试方法此时的单元测试方法:方法的权限是public,没有返回值,没有形参3.次单元测试方法上需要声明注解:@Test,并在单元测试类中导入:import org.junit.Test;4.声明好单元测试方法后,就可以在方法内测试相关代码说明:如果执行结果没有任何异常:绿条,有异常:红条public class JUnitTest {
2020-11-12 20:22:05
95
原创 Java基础十四(object类)
java.lang.Object类1.Object类是所有Java类的根父类2.如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类3.Object类中的功能(属性、方法)就具有通用性属性:无方法:equals()/toString()/getClass()/hashCode()/Clone()/finalize()4.object类中只声明了一个空参的构造器public class ObjectTest { public stati
2020-11-12 19:22:44
263
原创 Java基础十三(多态运用)
定义一个测试类GeometricTest编写equalsArea方法测试两个对象的面积是否相等(注意方法的参数类型,采用动态绑定技术)编写displayGeometricObject方法显示对象的面积(注意方法的参数类型,利用动态绑定技术)*/public class GeometricObject { protected String color; protected double weight; public String getColor(){ re.
2020-11-12 16:16:35
290
2
原创 Java基础十二(多态性)
面向对象特征之三:多态性(polymorphism)1.理解多态性:可以理解为一个事物的多种形态。2.何为多态性:对象的多态性,父类的引用指向子类的对象3.多态使用:虚拟方法调用有了对象的多态性以后,在编译器只能调用父类中声明的方法,单在运行期实际执行的是子类重写父类的方法总结:编译看左边,执行看右边4.多态性使用前提: 类的继承关系 方法的重写5.对象的多态性,只适用于方法,不适用于属性(编译和执行都只看左边)...
2020-11-12 15:32:57
224
2
原创 Java基础十一(案例)
案例写一个用户程序测试Account类,在用户程序中,创建一个账号为1122、余额为20000、年利率4.5%的Account对象使用withdraw方法提取30000元,并打印余额在使用withdraw方法取款2500元使用deposit方法存款3000元,然后打印余额和月利率public class Account { private int id;//账号 private double balance;//余额 private double annualInte
2020-11-02 19:23:25
669
原创 Java基础十(super关键字)
super关键字的使用1.super理解为:父类的2.super可以用来调用:属性、方法、构造器3.super的使用 3.1可以在子类的方法或构造器中,通过使用“super.属性”或“super.方法”的方式,显示的调用父类中声明的属性或者方法。但是,通常情况下,我们习惯省略super. 3.2特殊情况:当子类和父类中定义了同名属性时,要想在子类中调用父类中声明的属性,则必须显式的使用super.属性的方式进行调用。 3.3特殊情况:当子类重写了父类中的方法以后,想在子类的方法中调用父类
2020-11-02 19:18:56
83
原创 Java基础九(方法的重写)
方法的重写(override/overwrite)1.重写:子类继承父类后,可以对父类中同名同参数的方法,进行覆盖操作2.应用:重写以后,当创建子类对象以后,通过调用子类中的同名同参数的方法时,实际执行的是子类重写父类的方法。3.重写规定:方法的声明:权限修饰符 返回值类型 方法名(形参列表) throws 异常的类型{ //方法体}约定俗称:子类中的叫重写的方法,父类中的叫被重写的方法 (1)子类重写的方法的方法名和形参列表与父类被重写的方法的方法名和形参列表相同 (2)子类重写的方法
2020-11-02 16:40:06
125
原创 Java基础七(简单信息管理系统)
软件设计结构CustomerView为主模块,负责菜单的显示和处理用户操作CustomerList为Customer对象的管理模块,内部用数组管理一组Customer对象,并提供相应的添加、修改、删除和遍历方法,供CustomerView调用Customer为实体对象,用来封装客户信息public class Customer { private String name; private char gender; private int age; private
2020-11-02 16:29:11
504
原创 Java基础八(继承性)
面向对象的特征之二:继承性一、继承性的好处:1.减少代码量,提高代码复用性2.便于功能的拓展3.为之后多态性的使用,提供了前提二、继承性的格式:class A extends B{}A:子类、派生类、subclassB:父类、超类、基类、superclass1.体现:一旦子类A继承父类B以后,子类A中就获取了父类B中声明的结构:属性、方法特别的:父类中声明为private的属性或者方法,子类继承父类以后,仍然认为获取了父类的私有结构。只是因为封装性的影响,使得子类
2020-11-02 16:28:37
129
原创 Java基础六(this关键字)
this关键字的使用:1.this可以用来修饰、调用:属性、方法、构造器2.this修饰属性和方法:this理解为:当前对象或当前正在创建的对象 2.1在类的方法中,可以使用“this.属性”或“this.方法”的方式,调用当前对象属性或方法。通常情况下,可以省略this,当方法的形参和类的属性同名时,必须显式的使用“this.变量”,表明此变量是属性,而非形参 2.2在类的构造器中,可以使用“this.属性”或“this.方法”的方式,调用当前正在创建的对象属性或方法。通常情况下,可以
2020-11-01 19:26:50
132
原创 Java基础五(构造器)
类的结构之三:构造器(或构造方法、constructor)的使用一、构造器的作用:创建对象初始化对象的信息二、说明:如果没有显式定义类的构造器的话,则系统默认提供一个空参的构造器定义构造器的格式:权限修饰符 类名(形参列表){}一个类中定义多个构造器,彼此构成重载一旦显式定义了类的构造器之后,系统不再提供默认的构造器public class PersonTest { public static void main(String[] args) { //创建类
2020-11-01 16:28:18
256
原创 Java基础四(封装)
面向对象的封装性:封装与隐藏一、问题的引入当创建一个类的对象后,可以通过“对象.属性“的方式进行赋值。赋值操作要受到属性的数据类型和存储范围约束。在实际问题时,需要给属性赋值加入额外的限制条件。这个条件就不能在属性声明是体现,只能通过方法进行限制条件的添加。同时,需要用户避免用户“对象.属性“的方式进行赋值。则需要将属性声明为private,此时针对属性就体现了封装性。二、封装性的体现1.类的属性XX私有化(private),同时,提供公共的(public)方法获取(getXX)和设置
2020-11-01 15:10:50
394
原创 Java基础三(重载与值传递)
方法重载(overload) 1.定义:在同一个类中,允许存在一个以上的同名方法,只要他们的参数或者参数个数类型不同即可 “两同一不同:”同一个类、相同的方法参数列表不同:参数个数不同,参数类型不同 2.在通过对象调用方法时,如何确定某一个指定的方法 方法名 -> 参数列表 public class OverLoadTest { public static void main(String[] args){ OverLoadTest te
2020-11-01 14:08:30
114
原创 Java基础二(class)
一、java面向对象(oop)学习的三条主线 1.java类及类的成员:属性、方法、构造器;代码块、内部块 2.面向对象的三大特征:封装性、继承性、多态性、(抽象性) 3.其他关键字:this、super、static、final、abstract。。。二、设计类,其实就是设计类的成员 属性 = 成员变量 = field = 域、字段 方法 = 成员方法 = 函数 = method 创建类的对象 = 类的实例化 = 实例化类public class object_demo_01
2020-10-25 16:53:18
136
原创 MySql数据库基本操作七(select子查询)
SELECT子查询 仅仅支持标量子查询 案例:查询每个部门的员工个数SELECT d.*,( SELECT COUNT(*) FROM employees e WHERE e.department_id=d.department_id) 个数FROM departments d; 案例:查询员工号=102的部门名SELECT ( SELECT department_name FROM departments d INNER JOIN employees e
2020-10-25 16:43:57
1069
原创 Java基础一(变量的使用)
变量的使用 1.java定义变量的格式:数据类型 变量名 = 变量值; 2.变量需要先声明,后使用public class Variable { public static void main(String[] args){ //变量定义 int number = 1001; //变量使用 System.out.println(number); //变量声明 int number2;
2020-10-25 16:42:55
196
原创 MySql数据库基本操作六(where or having子查询)
子查询含义: 出现在其他语句中的select语句,称为子查询或内查询 外部的查询语句,称为主查询或者外查询分类: 按子查询出现的位置: SELECT 后面 仅仅支持标量子查询 FROM 后面 支持表子查询 WHERE或having后面 标量子查询 列子查询 行子查询 exists后面(相关子查询) 表子查询 按结果集的列数不同: 标量子查询(结果集只有一行多列) 列子查
2020-10-24 19:48:45
568
原创 MySql数据库基础操作五(外连接)
外连接应用场景:用于查询一个表中有,另一个表中没有的记录 特点: 外连接的查询结果为主表中的所有记录 如果从表中有和它匹配的,则显示匹配的值 如果从表中没有和它匹配的,则显示null 外连接查询结果=内连接查询结果+主表中有而从表中没有的记录 左外连接,left左边的主表 右外连接,right右边是主表 左外和右外交换两个表的顺序,可以实现同样的效果 全外连接=内连接的结果+表一中有表二中没有+表2中有表1没有(oracle支持)引入:
2020-10-24 19:02:53
354
原创 MySql数据库基本操作四(连接查询)
连接查询表数据链接: https://pan.baidu.com/s/1uDxNjKVKlz9uVicf9IYCkg 提取码: 2y1w 含义:又称为多表查询 笛卡尔积现象:表1有m行,表2有n行,结果为m*n行 发生原因:没有有效的链接条件 如何避免:添加有效的链接条件分类:按年代分类: sql92标准:仅仅支持内连接 sql99标准:支持内连接+外连接(左外和右外)+交叉连接按功能分类: 内连接: 等值连接 非等值连接 自连接 外连接:
2020-10-24 16:02:28
328
原创 MySql数据库基本操作三(分组查询)
DQL语言学习(Data Query Languge)二、分组函数/*功能:用作统计使用,又称为聚合函数或统计函数或组函数分类:sum、avg、max、min、count*/SELECT SUM(salary)FROM employees;SELECT AVG(salary)FROM employees;SELECT MAX(salary)FROM employees;SELECT MIN(salary)FROM employees;SELECT COUNT(salary
2020-10-24 12:16:25
420
原创 MySql数据库基本操作二(常见函数)
DQL语言学习(Data Query Languge)常见函数概念:类似于方法好处:1、隐藏实现细节2、提高代码的重用性调用:selelt 函数名(实参列表) from 表分类:1、单行函数concat、length、ifnull2、分组函数功能:做统计使用,又称为统计函数、聚合函数、组函数字符函数1、length返回字符长度,汉字占三个字节LENGTH(str)SELECT LENGTH('john');SELECT LENGTH('陈john');2、concat拼接
2020-10-23 21:01:49
175
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人