- 博客(58)
- 问答 (1)
- 收藏
- 关注
原创 异常处理try-catch-finally/throws/throw/Exception
异常处理:异常概述与异常体系结构首先,我们有一个顶级的父类:class Throwable,这个父类下面有两个子类:class Error and class Exception 查看继承顺序,快捷键:ctrl+t总的来说分为两个大类:Error / Exception第一个是系统性的错误:比如Stack overflow Error and out of memory 这一类我们不展开讨论,主要说第二类第二个又分为编译时异常(受检异常checked)与运行时异常
2021-04-10 20:53:45 288
原创 static-final-abstract分别用来修饰的结构
接口能否继承接口? 抽象类是否能实现接口? 抽象类是否能继承非抽象的类?能 能 能声明抽象类,包含抽象方法,测试类中创建一个继承抽象类的匿名子类的对象abstract class A{public abstract void eat();}public static void main(String[] args){A a=new A(){public void eat(){System.out.println("吃饭");}};a.eat();}正常的类里面有的东西
2021-04-10 20:49:49 134
原创 类的内部成员之五:内部类
内部类介绍:类的内部成员之五:内部类JAVA中允许将一个类A声明在另一个类B中,则类A就是内部类,类B称为外部类;内部类的分类:成员内部类(静态、非静态) and 局部内部类(方法内、代码块内、构造器内)成员内部类:一方面,作为外部类的成员调用外部类的结构;可以被static 修饰可以被4种不同的权限修饰另一方面,作为一个类类内可以定义属性、方法、构造器可以被final修饰,表示此类不能被继承。言外之意,不使用final就可以被继承可以被abstract修饰
2021-04-10 20:46:44 132
原创 interface接口
概述:接口的使用:interface来定义:interface xxx{ }JAVA中,接口和类是并列的两个结构、如何定义接口:定义接口中的成员JDK7及以前,只能定义全局常量和抽象方法全局变量:public static final的,但是书写时,可以省略不写抽象方法:public abstractJDK8: 除了定义全局常量和抽象方法之外,还可以定义静态方法/默认方法接口中不能定义构造器,意味着接口不可以实例化JAVA开发中,接口通过让类去实现(impl
2021-04-10 20:45:57 330
原创 abstract抽象类/抽象方法
abstract:抽象的abstract class Person{}(不可被实例,只可以被继承):可以用来修饰的结构:类、方法abstract修饰类:抽象类此类不能实例化抽象类中一定有构造器,便于子类实例化时调用(涉及,子类对象实例化的全过程)开发中,都会提供抽象类的子类,让子类对象实例化,完成相关的操作abstract修饰方法,抽象方法抽象方法只有方法的声明,没有方法体包含抽象方法的类,一定是一个抽象类。反之抽象类中可以没有抽象方法的若子类重写父类中所有的抽象方法后,此子类方
2021-04-10 20:42:01 163
原创 final关键字
final关键字:使用:final可以用来修饰的结构:类、方法、变量;final 用来修饰一个类:此类不能被其他类所继承比如:String 类,System类, StringBuffer类final用来修饰方法:表明此方法不可以被重写比如:Object类中getClass()final用来修饰变量, 此时的“变量”就是一个常量4.1 final修饰属性,可以考虑赋值的位置有:显示初始化、代码块中初始化、构造器初始化4.2 final修饰局部变量:尤其是使用final修饰形
2021-04-10 20:40:56 63
原创 JAVA中的代码块
代码块介绍:代码块的作用:用来初始化类、对象代码块如果有修饰的话,只能使用static分类:静态代码块VS非静态代码块静态代码块内部可以有输出语句随着类的加载而执行(类只加载一次,静态代码块只执行一次)作用:初始化类的信息如果一个类中有多个静态代码块,则按照上下顺序执行静态代码块只能调用静态的结构,不能调用非静态的结构非静态代码块内部可以有输出语句随着对象的创建而执行(每造一个对象就执行一次)作用:可以在创建对象时,对对象的属性等进行初始化如果一个类中定
2021-04-10 20:39:46 73
原创 main()方法详细说明
main()方法:main()方法的使用说明:main()方法作为程序的入口main()方法也是一个普通的 静态方法只能有一个公共的public class但是可以有两个以上的public static void main(String[] args){},静态方法通过类去调。静态mian方法里面不能直接调非静态的方法如果要调非静态的方法,必须造对象,透过对象去调,这就是为什么之前要先造对象的原因如果我们要在静态的main方法调,可以把另一个方法根据实际情况
2021-04-10 20:38:03 3066
原创 单例设计模式-饿汉/懒汉
所谓单例设计模式,就是采取一定的方法保证在整个软件系统中,对某个类只存在一个对象实例。要求会手写单例模式:先来说说饿汉模式设计:上来就造对象package com.myobjectoriented3.nonworking;//单例设计模式 饿汉模式设计public class Singletontest {public static void main(String[] args) { Bank b1=Bank.getInstance(); Bank b2=Bank.getInst
2021-04-10 20:36:15 85
原创 static 关键字
static 关键字:为什么要有static关键字?static关键字的使用:static:静态的static可以用来修饰:属性、方法、代码块、内部类(不能修饰构造器,因为没有意义)使用static修饰属性:静态变量/类变量3.1属性:按是否使用static修饰,又分为:静态属性/非静态属性(实例变量)实例变量:我们创建了类的多个对象,每个对象都独立的拥有一套类中的非静态属性。当修改其中一个对象的非静态变量时,不会导致其他对象中同样的属性值修改;静态变量:我们创建了类的多个对象
2021-04-08 13:25:15 55
原创 ==与equals方法的区别
==与equals方法的区别== 运算符可以使用在基本数据类型变量和引用数据类型变量中如果比较的是基本数据类型的变量,则比较两个变量保存的数据是否相等(类型可以不同)如果比较的是引用数据类型变量,则比较的是两个对象的地址是否相同。即两个引用是否指向同一个实体int i=10;int j=10;double d=10.0;char c=10;i==j;//truei==d;//truei==c;//trueequals方法:Object类和String类中都有
2021-04-08 13:22:19 83
原创 toString()方法
toString()方法:Object类中toString()的使用:当我们输出一个对象的引用时(直接输出一个对象),实际调用的就是当前对象的toString()Object 类中toString()的定义:public String toString() {return getClass().getName() + “@” + Integer.toHexString(hashCode());}//下面这个是Object类中的toString()原码 获取这个类的名字.获取hashCo
2021-04-08 13:18:11 229
原创 JAVA中的JUnit单元测试
JAVA中的JUnit单元测试:什么是JUnit单元测试?简单来说就是想测试哪一块的结果就运行哪一块。如何实现?步骤如下图:package com.wrapper.nonmworking;import org.junit.Test;public class WrapperTest { @Test public void test1() { int num1=30; String nums2="1234"; Integer num=new Integer(num1) ;
2021-04-08 13:15:20 87
原创 Objece类的使用
Objece类的使用:Object根父类: 没有属性,只有方法clone: 克隆finalize:方法名 --垃圾回收器getClass: 返回当前类Object类中的主要结构:这里面比较重要的就是: equals和toString方法
2021-04-08 13:13:00 135
原创 instanceof关键字
instanceof关键字:有了对象的多态性以后,内存中实际上是加载了子类特有的属性和方法,但是由于变量声明为父类的类型,导致编译时,只能调用父类中有的属性和方法,无法调用子类中特有的属性和方法。但是我们又想调用子类特有的属性和方法,怎么办?我们可以使用强制转换Man m1=(Man)p2;我们开发中的用的多的是向上转型(多态),向下转型用的很少注意:当我们使用强制转换时可能出现异常classcastexception 翻译过来就是类强制转换异常,有点像基本数据类型强制转换时候的情况,基本数
2021-04-08 13:11:27 109
原创 super关键字
super关键字:super关键字的使用:super理解为:父亲的super可以用来调用属性、方法、构造器super的使用:调用属性和方法3.1 我们可以在子类的方法或构造器中,通过使用“super.属性”或“super.方法”的方式显示的调用父类中声明的属性或方法。但是通常情况下,我们习惯省略“super”3.2 特殊情况:当子类和父类中定义了同名的属性时,我们要想在子类中调用父类中声明的属性,则必须显示的写成“super.属性”来明确指明调用的是父类的属性3.3 特殊情况:
2021-04-08 13:09:01 79
原创 包装类的使用
包装类:为什么要有包装类?JAVA提供了8种基本数据类型对应的包装类,使得基本数据类型的变量具有了类的特征掌握:基本数据类型/包装类/String三者之间的互相转换整体说明:包装类的使用:互相转换:基本数据类型<–>包装类<–>String类(重点)自动装箱和自动拆箱public void test3() { System.out.println("*******************************************"); in
2021-04-08 13:08:04 96
原创 面向对象特征之三:多态
面向对象特征之三:多态:将子类的对象赋给父类的引用;逆过程:将父类强转成子类,为了使用子类更多的属性和更强大的功能可以理解为一个事物的多种形态何为多态性: 对象的多态性:父类的引用指向子类的对象多态的使用:虚拟方法调用(堆里有子父类所有的属性和方法)有了对象的多态性以后,我们在编译期只能调用父类中声明的方法,但在实际运行期,我们运行的是子类中的方法总结:编译,看左边;运行,看右边;(只适用于方法的调用)多态性的使用前提:第一:要有类的继承关系;第二:要有方法的重写;多态
2021-04-08 13:05:38 100
原创 方法的重写
方法的重写:子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作、、static不能被覆盖,是随着类的加载而加载的应用:重写以后,当创建子类对象以后,通过子类对象调用子父类中同名同参数的方法时,实际执行的是子类重写父类以后的方法,也就是调用的是子类的方法重写以后,父类去调用方法依旧是调用父类自己的重写的规定:方法的声明: 权限修饰符 返回值类型 方法名(形参列表)throws 异常的类型 { 方法体}约定俗称:子类中的叫重写的方法,
2021-04-08 13:03:31 118
原创 面向对象特征之二:继承
面向对象特征之二:继承:1.作用:代码量更少功能拓展为之后多态的使用提供了前提2.继承的格式:class A extends B{}A:子类、派生类、subclassB:父类、超类、基类、superclass3.体现:一旦子类继承父类以后,子类中就获取了父类B中声明的所有属性和方法特别的:父类中声明为private的属性和方法,子类继承父类以后,仍然认为获取了父类中私有的结构。只是因为封装性的影响,使得子类不能直接调用父类的结构而已。子类继承父类以后,还可以声明自己特有的属
2021-04-06 17:50:55 71
原创 子类实例化对象的全过程
子类实例化对象的全过程:我们只造了一个对象dog,但是dog的构造器直接或间接的调用了直接父类或间接父类的构造器来加载他们的属性和方法子类对象实例化全过程图示:从结果上来看:(继承性)子类继承父类以后就获取了父类中声明的属性和方法创建子类的对象,在堆空间中,就会加载所有父类中声明的属性,同时在方法区加载方法从过程来看:当我们通过子类的构造器创建子类的对象时,我们一定会直接或间接的调用其父类的构造器,进而调用父类的父类的构造器,直到调用了java.lang.Object类中空参的构造
2021-04-06 17:46:18 141
原创 import关键字
import介绍:import关键字的使用:(导入类和接口)import导入在源文件中显示的使用import结构导入指定包下的类、接口声明在包的声明和类的声明之间如果需要导入多个结构,则并行写出即可。使用xxx.* 的方式可以导入xxx包下所有的类或接口如果使用的类或接口是本包中定义的,则可以省略import结构如果使用的类或接口是java.lang包下定义的,则可以省略import结构在源文件中,使用了不同包下同名的类,其中一个类必须以全类名的方式显示出来com.myobjecto
2021-04-06 17:39:20 691
原创 package关键字
package关键字:为了更好的实现项目中类的管理,提供包的概念使用package声明类或接口所属的包,声明在源文件的首行包属于标识符,遵循标识符的命名规则规范,做到见名知意每”.“一次,就是一层文件目录同一个包下,不能命名同名的接口、类不同的包下,可以命名同名的接口、类...
2021-04-06 17:34:08 98
原创 this关键字介绍
this关键字介绍:this关键字的使用:1.this可以用来修饰或者调用:属性、方法、构造器2.this修饰属性和方法:理解为:当前对象。当修饰构造器的时候:理解为当前正在创造的对象在类的方法中,我们可以使用“this.属性”或者“this.方法”的方式,调用当前对象属性或方法。但是通常情况下我们都选择省略“this.”。特殊的:如果方法的形参和类的属性同名时,必须使用this关键字(this.变量),表明此变量是属性,而非形参。在类的构造器中,我们可以使用“this.形参”的方式,调用当前正
2021-04-06 17:32:39 378
原创 类的结构之三:构造器(constructor)
类的结构之三:构造器(constructor)构造器的作用:创建对象,new+构造器 ; 初始化被造对象的属性(注意区别构造器与方法:构造器是创建对象,而方法是透过对象来调用的)说明:如果没有定义类的构造器的话,系统会提供一个空参的构造器。但是一旦定义了构造器,系统就不在提供空参的构造器了一个类中可以定义多个构造器,这就是构造器的重载我们自己定义构造器的格式为: 权限修饰符 类名(形参){}构造器练习题01:package com.myobjectoriented.nonworking;/
2021-04-06 17:25:55 1127
原创 再谈方法:重载--可变形参--值传递--递归
方法的重载:1.定义:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。“两同一不同“:同一个类,相同方法名参数列表不同:参数个数不同,参数类型不同2.举例:Arrays类中重载的sort()/binarySearch()3.判断是否是重载:跟方法的权限修饰符,返回这类型,形参变量名,方法体都没有关系4.在通过对象调用方法时,如何确定某一个指定的方法。方法名---->参数列表5.题目:package com.myobjectoriented.n
2021-04-04 13:14:57 130
原创 面向对象特征之一:封装
面向对象特征之一:封装:有时候我们需要对用户输入的属性进行限制,加入一些限制条件,不能直接给属性赋值,需要通过方法来给属性赋值,比如(setxxx).同时我们需要避免用户再使用对象.属性的方式对属性进行赋值,则需要将属性声明为“private",这就体现了封装性。封装性的体现:不对外暴露私有的属性:我们将类的属性”private"同时提供方法去限制赋值操作(setxxx),然后再提供方法去查看 (getxxx) 。不对外暴露私有的方法。不对外暴露的构造器(单例模式)如果不希望类在包外被调用,可以设
2021-04-04 13:05:11 143
原创 匿名对象
匿名对象:介绍:我们创建的对象,没有显示赋值,即为匿名对象如下:package com.myobjectoriented.nonworking;/** * * @Desciption * @author Abraham * @email 1290807550@qq.com * @version JDK1.8 * @date 2021年3月23日上午8:39:50 */public class Anonymousobject { public static void main(S
2021-04-04 13:02:07 98
原创 面向对象的几个基础题目
面向对象的几个基础题目:1.定义一个类:圆,并且求它的面积:package com.myobjectoriented.nonworking;/** * * @Desciption * @author Abraham * @email 1290807550@qq.com * @version JDK1.8 * @date 2021年3月19日下午10:30:53 */public class Cricle { //新造的一个类,求圆的面积: public static void
2021-04-04 12:54:42 162
原创 类中方法的声明和使用
类中方法的声明和使用:方法:用来描述类的功能比如:Math类:sqrt()/ random()…Scanner类:nextInt()…Arrays类:sort()/ binarySearch()/ toString()/ equals()…1.举例:有无返回值,有无形参列表public void eat() {}public void sleep(int time) {}public String getname(){}public String getn
2021-04-04 12:46:55 731
原创 类的属性VS局部变量
类的属性VS局部变量:类里面的属性如何声明?有哪些需要注意的点:属性(成员变量)VS 局部变量1.相同点: 1.1都是先声明后使用 1.2格式都为:类型 变量名=变量值 1.3都有其规定的作用域2.不同点2.1在类中声明的位置不同:属性是直接定义在类{}里面,但是局部变量是声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量2.2权限修饰符的不同:属性(成员变量):可以在声明变量时,使用权限修饰符,规定其权限常用
2021-04-04 12:44:00 227
原创 面向对象的基本介绍
学习面向对象的三条主线:1.JAVA类及类的成员:属性,方法,构造器,代码块,内部类2.面向对象的三大特性:封装性,继承性,多态性,(抽象性)3.其他关键字:this, super, static, final, abstract, interface, package, import面向对象的两个要素:类:对一类事物的描述,是抽象的,概念上的定义对象:是实际存在的该类事物的每个个体,因而也称为实例(instence)1.面向对象程序设计的重点是类的设计2.设计类,就是设计类的成员
2021-04-04 12:41:07 139
原创 排序算法(用的多)
排序算法(用的多):介绍:分类:十大内部排序算法:选择排序:直接选择排序,堆排序;交换排序:冒泡排序,快速排序插入排序:直接插入排序、折半插入排序、Shell排序归并排序桶式排序基数排序注意:重点掌握冒泡排序和快速排序;堆排序和归并排序要熟悉算法的5大特征:冒泡排序:介绍:具体过程如下:手写一个冒泡排序呗:package com.my.nonworking;/** * * @Desciption * @author Abraham * @email
2021-04-04 12:29:41 102
原创 数组操作工具 “Arrays” 工具类的使用
数组操作工具 “Arrays” 工具类的使用:来看看下表:package com.my.nonworking;import java.util.Arrays;/** * * @Desciption * @author Abraham * @email 1290807550@qq.com * @version JDK1.8 * @date 2021年3月18日下午12:50:11 */public class Arrays$$01 {public static void
2021-04-04 12:20:52 89
原创 数组的常见异常
数组的常见异常:一般来说,常见的异常就两个:1.越界异常;2.空指针异常越界异常:OutOfBoundsException;空指针异常:NullPointerException;package com.my.nonworking;/** * * @Desciption * @author Abraham * @email 1290807550@qq.com * @version JDK1.8 * @date 2021年3月18日下午1:55:22 */public class
2021-04-04 12:18:48 1193
原创 数组的复制、反转、查找
数组的复制:来看下面的题目:package com.my.nonworking;/** * * @Desciption * @author Abraham * @email 1290807550@qq.com * @version JDK1.8 * @date 2021年3月17日下午1:33:50 */public class Array09 { public static void main(String[] args) { int[] arr01,arr02; a
2021-03-30 22:03:46 100
原创 内存解析(一维数组与二维数组)
内存结构说明:方法里面的变量都是局部变量,都存放在栈里面。堆是存放对象和数组,new出来的结构都放在堆空间中static 、常量、String主要存放在方法区堆栈里面的地址并不是内存底层真是的地址,它是JAVA虚拟机算出来的一个hash值,是屏蔽了底层真实地址的值我们来看一看数组在堆栈中是如何存储的:那二维数组在堆栈中如何存储的呢?当main 方法结束arr1会弹出栈,于是指针就没有了。当指针没有了,堆空间里面的数组也会在某个不确定的时间被回收。...
2021-03-30 21:59:40 549
原创 二维数组
二维数组:上图右边的排列两个String类型的元素先构成一个一维数组(陈伟霆 13387654384),然后多个一维数组再叠加,变成二维数组;也可以看成是把array01一维数组的元素放在array02一维数组里面注意:引用类型的数组堆里面存放的要么是null要么是地址。它的列里面如果是空的,行里面就是null;如果列里面有任何数字包括0,行都会变成地址。package com.my.nonworking;/** * * @Desciption * @author Abraham *
2021-03-30 21:56:16 98
空空如也
有没有哪位能看懂乱码的大神说说图片里的是什么编码集?我本机的是utf-8
2021-05-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人