java笔记
什么七七八八
这个作者很懒,什么都没留下…
展开
-
自定义异常和经验小结
自定义异常和经验小结使用java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。用户自定义异常类,只需继承Exception类即可。在程序使用自定义异常类,大体可分为以下几个步骤:创建自定义异常类在方法中通过throw关键字抛出异常对象如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。在出现异常方法的调用者中捕获异常并处理异常pack原创 2021-11-25 17:02:13 · 393 阅读 · 0 评论 -
捕获和抛出异常(Ctrl+Alt+T)
捕获和抛出异常(Ctrl+Alt+T)异常处理五个关键字try、catch、finally、throw、throwspackage com.exception;public class Test { public static void main(String[] args) { //假如要捕获多个异常:从小到大!// int a=1;// int b=0;// System.out.println(a/b);原创 2021-11-25 16:03:03 · 367 阅读 · 0 评论 -
Error和Exception(异常)
Error和Exception(异常)掌握以下三种类型的异常:检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。运行时异常:运行异常是可能被程序员避免异常。与检查性异常相反,运行时异常可以在编译时被忽略。错误ERROR:错误不是异常,而是脱离了程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到。异常体系结构ErrorError类对原创 2021-11-25 15:14:10 · 316 阅读 · 0 评论 -
N种内部类
N种内部类内部类就是一个类的内部在定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了。成员内部类静态内部类局部内部类匿名内部类package com.oop;import com.oop.Demo10.Outer;//一个项目应该这存在一个main方法public class Application { public static void main(String[] args) {原创 2021-11-23 12:19:39 · 166 阅读 · 0 评论 -
接口的定义与实现(重要)
接口的定义与实现(重要)普通类:只有具体实现抽象类:具体实现和规范(抽象方法)都有!接口:只有规范!自己无法写方法接口就是规范,定义的是一组规则,体现了现实世界中“如果你是…则必须能…"思想。如果你是天使,则必须能飞。如果你是汽车,则必须能跑。如果你好人,则必须干掉坏人;如果你是坏人,则必须欺负好人。接口的本质是契约,就像我们人间的法律一样。制定好后大家都遵守。OO的精髓,是对对象·的抽象,最能体现这一点的就是接口。为什么我们讨论设计模式都只针对具备了抽象能力的语言(比如原创 2021-11-21 20:14:42 · 93 阅读 · 0 评论 -
java抽象类
抽象类abstract修饰符可以用来修饰方法也可以修饰类,如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。抽象类,不能使用new关键字来创建对象,它是靠子类去实现它:约束。抽象方法,只有方法的声明,没有方法的实现,它是用来让子类实现的。抽象类中可以写普通方法抽象方法必须在抽象类中抽象的抽象:约束子类继承抽象类,那么就必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类原创 2021-11-21 11:20:33 · 191 阅读 · 0 评论 -
static关键字详解
static关键字详解package com.oop.Demo07;public class Person {// {// //代码块(匿名代码块)// }//// static {// //static代码块(静态代码块)// } //2:赋初始值 { System.out.println("匿名代码块"); } //1 :只执行一次 static {原创 2021-11-21 10:42:18 · 187 阅读 · 0 评论 -
instanceof和类型转换
instanceof和类型转换instanceof:判断一个对象是什么类型public class Person { public void run(){ System.out.println("ss"); }}public class Student extends Person { public void go(){ System.out.println("gg"); }}public class Teacher ext原创 2021-11-21 00:50:50 · 307 阅读 · 0 评论 -
java多态
java多态即同一方法根据发送对象的不同而采用多种不同的行为方式。一个对象的实际是正确的,但可以指向对象的引用的类型有很多(父类或者有关系的类)3.多态存在的条件(1)有继承关系(2)子类重写父类方法(3)父类引用指向子类对象4.注意:(1) 多态是方法的多态,属性没有多态性。(2)父类和子类,有类型 类型转换异常!(ClassCastException!)(3)存在的条件:继承关系,方法需要重写,父类引用指向子类对象! Father f1=new Son();方法不能被重原创 2021-11-21 00:01:21 · 70 阅读 · 0 评论 -
方法重写(重点)-->多态
方法重写(重点)–>多态总结重写:需要有继承关系,子类重写父类的方法! 1. 方法名必须相同 2. 参数列表必须相同 3. 修饰符:范围可以扩大:public>Protected>Default>private 4. 抛出异常:范围可以被缩小但不能扩大;ClassNotFoundException -->Exception(大)重写:子类的方法和父类必须要一致;方法体不同;为什么需要重写:父类的功能,子类不原创 2021-11-20 21:12:18 · 51 阅读 · 0 评论 -
Super详解(重点)
Super详解(重点)super注意点; 1. super调用父类的方法,必须在构造方法的第一个 2. super必须只能出现在子类的方法或者构造方法中! 3. super和this 不能同时调用构造方法!Vs this: 代表的对象不同: this:本身调用者这个对象 super:代表父类对象的应用 前提 this:没有继承也可以使用原创 2021-11-20 01:46:34 · 187 阅读 · 0 评论 -
java继承
java继承1.继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模2.extends的意思是“扩展”。子类是父类的扩展。3.JAVA中类只有单继承,没有多继承!4.继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。5.继承关系的俩个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示。6.子类和父类之间,从意义上讲应该具有“is a"的关系。7.object类package com.oop;import com.原创 2021-11-20 01:06:35 · 49 阅读 · 0 评论 -
封装详解。
封装详解1.该露的露,该藏的藏 我们程序设计的追求“高内聚,低耦合”。 高内聚:就是类的内部数据操作细节自己完成,不允许外部干涉; 低耦合:仅暴露少量的方法给外部使用。2封装(数据的隐藏) 通常,应禁止直接访问一个对象的数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。记住这句话就够了:属性私有,get/set封装的意义:1.提高程序的安原创 2021-11-20 00:15:12 · 68 阅读 · 0 评论 -
简单小结类与对象
简单小结类与对象1.类与对象 类是一个模板:抽象对象是一个具体的实例2.方法 定义、调用!3.对应的引用 引用类型: 基本类型(8) 对象是通过引用来操作的: 栈——>堆(地址)4:属性:字段Field 成员变量 默认初始化: 数字: 0 0.0 char :u0000 boolean: false原创 2021-11-19 12:15:57 · 278 阅读 · 0 评论 -
创建对象内存分析
创建对象内存分析package com.oop.demo03;public class Pet { public String name; public int age; public void shout(){ System.out.println("叫了一声"); }}/*//一个项目应该这存在一个main方法public class Application { public static void main(String[]原创 2021-10-26 18:25:18 · 30 阅读 · 0 评论 -
构造器详解(重要)
构造器详解(重要)构造器快捷键 alt+insert构造器:1. 和类名相同2. 没有返回值作用:1.new 本质在调用构造方法2.初始化对象的值注意点:1.定义有参构造之后,如果想使用无参构造,必须显示的定义一个无参构造this. = ;package com.oop.demo02;//java--》classpublic class Person { //一个类即使什么都不写,它也会存在一个方法(构造器) //显示定义一个构造器 //可以初始化信原创 2021-10-26 17:54:13 · 51 阅读 · 0 评论 -
类与对象的关系
类与对象的关系类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表一个具体的事物。 1.动物、植物、手机、电脑…… 2.Person类、Pet类、Car类等,这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为对象是抽象概念的具体实例 1.张三就是人的一个具体实例,张三家里的旺财就是狗的一个具体实例。 2.能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念。创建与初始化对象原创 2021-10-25 22:22:17 · 79 阅读 · 0 评论 -
回顾方法及加深
回顾方法及加深方法的定义 1.修饰符 2.返回类型package com.oop.demo01;//Demo1 类public class Demo01 { //main 方法 public static void main(String[] args) { } /* * 修饰符 返回值类型 方法名(……){ * //方法体 * return 返回值; * }原创 2021-10-25 17:50:25 · 51 阅读 · 0 评论 -
面向对象编程(OOP)
面向对象编程(OOP)面向过程&面向对象面向过程思想(线性) 1.步骤清晰简单,第一步做什么,第二步做什么…… 2.面对过程适合处理一些较为简单的问题面向对象思想(分类) 1.物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。 2.面向对象适合处理复杂的问题,适合处理需要多人协作的问题!对于描写复杂的事务,为了原创 2021-10-25 00:22:56 · 57 阅读 · 0 评论 -
稀疏数组(数据结构)
稀疏数组(数据结构)需求:编写五子棋游戏中,有存盘和续上盘的功能0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0原创 2021-10-24 17:35:05 · 48 阅读 · 0 评论 -
冒泡排序(重要)
冒泡排序(重要)冒泡排序无疑是最为出名的排序算法之一,一共有八大排序!冒泡代码还是相当简单的,两层循环,外层冒泡轮数,里层依次比较,江湖中人尽皆知。我们看到嵌套循环,应该立马就可以得出这个算法的时间复杂度为O(n2)。思考:如何优化?package com.boss.array;import java.util.Arrays;//冒泡排序//1.比较数组中两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置//2.每一次比较,都会产生出一个最大或者最小的数字;//3.下原创 2021-10-24 15:55:15 · 62 阅读 · 0 评论 -
Arrays类解析
Arrays类解析数组的工具类java.util.Arrays由于数组对象本身并没有什么方法可以供我们调用,但API中提供一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作。查看JDK帮助文档Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而”不用“使用对象来调用(注意:是”不用“而不是”不能“)具有以下常用功能:给数组赋值:通过fill方法。对数组排序:通过sort方法,按升序。比较数组:通过equa原创 2021-10-23 10:26:06 · 48 阅读 · 0 评论 -
二维数组使用
二维数组使用多维数组多维数组可以看成数组的数组,比如二维数组就是一个特殊的一维数组,其每个元素都是一个一维数组。二维数组int a[][]=new int[2][5];解析:以上二维数组a可以看成一个两行五列的数组思考:多维数组的使用?num[1][0];package com.boss.array;public class ArrayDemo06 { public static void main(String[] args) { //[4原创 2021-10-23 09:39:21 · 44 阅读 · 0 评论 -
数组的使用
数组的使用数组使用普通的For循环package com.boss.array;public class ArrayDemo04 { public static void main(String[] args) { int[] arrays={1,2,3,4,5}; //打印全部的数组元素 for (int i = 0; i <arrays.length ; i++) { System.out.printl原创 2021-10-22 20:08:12 · 51 阅读 · 0 评论 -
数组,下标越界及小结
数组,下标越界及小结数组的四个基本特点其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。其元素必须是相同类型,不允许出现混合类型。数组中的元素可以任何数据类型,包括基本类型和引用类型。数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。 数组本身就是对象,java中对象是在堆中的,因此数字无论保存原始类型还是其他对象类型, 数组对象本身是在堆中的。数组边界下标的合法区间:【0,length-1],如果越界就会报错:原创 2021-10-22 00:06:45 · 345 阅读 · 0 评论 -
数组,三种初始化和内存分析
数组,三种初始化和内存分析Java内存分析:堆:存放new的对象和数组 可以被所有的线程共享,不会存放别的对象引用栈:存放基本变量类型(会包含这个基本类型的具体数值) 引用对象的变量(会存放这个引用在堆里面的具体地址)方法区:可以被所有线程共享 包含所有的class和static变量最早错误:java.lang.ArraylndexOutOfBoundsExcetion:1//数组下标越界了,超过范原创 2021-10-21 23:40:37 · 72 阅读 · 0 评论 -
数组和声明数组
数组和声明数组数组的定义数组是相同类型数据的有序集合。数组描述的是相同类型若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。数组声明创建首先必须声明数组变量,才能在程序中使用数组。下面是数组变量的语法:dataType[] arrayRefvar;//首选的方法或dataType arrayRefvar[];java语言使用new操作符来创建数组,语法如下:dataType[] arrayRefvar=n原创 2021-10-21 00:13:49 · 63 阅读 · 0 评论 -
递归(特别重要,小计算用)
递归(特别重要,小计算用)递归就是:A方法调用B方法,就是自己调用自己。利用递归可以简单的程序来解决一些复杂的问题。它通常把一个大型的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可以描叙出解题过程过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。递归结构包括两个部分: 1. **递归头:什么时候不调用自身方法。如果没头,将陷入死循环。** 2. **递归体:什么时候原创 2021-10-16 17:16:00 · 106 阅读 · 0 评论 -
可变参数(不定项参数)
可变参数(不定项参数)JDK1.5开始,java支持传递同类型的可变参数给一个方法。在方法声明,在指定参数类型后加一个省略号(…)。一个方法中只能指定一个可变参数,它必须是方法最后一个参数。任何普通的参数必须在它之前声明。可变参数:package com.boss.medhod;public class Demo04 { public static void main(String[] args) { Demo04 demo04= new Demo04();原创 2021-10-15 18:29:50 · 57 阅读 · 0 评论 -
命令行传参
命令行传参有时候你希望运行一个程序时候再传递他的消息。这要靠命令行传参数给main()函数实现。public class CommandLine{ public static void main(String args[]){ for(int i=0;i<args.length;i++){ Systm.out.println("args["+i+"]:"+args[i]); } }}命令行D:\java学习\代码\原创 2021-10-15 17:54:32 · 65 阅读 · 0 评论 -
方法的重载
方法的重载重载接收在一个类中,有相同的函数名称,但是形参不同的函数。方法的重载的规则 1. **方法名称必须相同。** 2. **参数列表必须不同(个数不同,或类型不同,参数排列顺序不同等)。** 3. 方法的返回类型可以相同也可以不相同。 4. 仅仅返回类型不同不足以成为方法的重载。实现理论 方法名称相同时,编译器会根据调用方法的参数个数,参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错方法的重载:pa原创 2021-10-15 17:31:26 · 57 阅读 · 0 评论 -
JAVA的方法的定义和调用
JAVA的方法的定义java的方法类类似于其他语言的函数,是一段用来完成特点功能的代码片段,一般情况下,定义一个方法包含以下语法:修饰符 返回值类型 方法名(参数类型,参数名){ …… 方法体 …… return 返回值;}**方法含一个方法和一个方法体。**下面是一个方法所以部分:1.修饰符:修饰符,这是可选的,告诉编译器如何调用方法,定义了该方法的访问类型。2.返回值类型:方法可能会返回值。returnValueTyue是方法返回值的数据类型。有原创 2021-10-09 01:06:59 · 83 阅读 · 0 评论 -
Java方法详解
Java方法详解什么是方法System.out.println(),那么它是什么?System:系统的一个类,out:输出对象,println():方法调用System:系统的一个类中的out:输出对象中的println():方法java方法是语句的集合,他们在一起执行一个功能 1. 方法是解决一类问题的步骤的有序组合 2. 方法包含于类或者对象中 3. 方法在程序中创建,在其他地方被引用package com.boss.原创 2021-10-06 18:21:13 · 58 阅读 · 0 评论 -
打印三角形流程控制练习
流程控制练习打印三角形package com.boss.struct;public class TestDemo { public static void main(String[] args) { //打印三角形 5行 for (int i = 0; i <= 5; i++) { for (int j= 5; j >=i;j--) { System.out.print(" ");原创 2021-10-06 14:50:01 · 69 阅读 · 0 评论 -
break continye
break continye质数:大于1的自然数中,除了1和他本身以外不再有其它因数的自然数break在循环语句的主体部分,均可以用break语句来控制循环的流程。break用于强制退出循环,不执行循环中剩下的语句。(break语句也在while语句中使用)package com.boss.struct;public class BreakDemo { public static void main(String[] args) { int i=0;原创 2021-10-06 11:52:06 · 5546 阅读 · 0 评论 -
For循环(十分重要)
For循环(十分重要)虽然所有循环结构都可以while或者do……while表示,但java提供了另一种语句——for循环,使一些循环结构变得更加简单。for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环语句。for循环执行的次数是在执行前就确定了语法for(初始化;布尔表达式;更新){ //代码语句}练习:package com.boss.struct;public class ForDmeo01 { public static voi原创 2021-10-06 11:15:36 · 173 阅读 · 0 评论 -
循环结构, while, do……while
循环结构while循环do……while循环for 循环在Java5引入一种主要用于数组增强型for循环while循环while是最基本的循环,结构为:while(布尔表达式){ //循环内容}只要布尔表达式为true,就会一直循环下去我们大多数情况会有循环停下来,需要一个表达式失效的方式来结束循环少部分需要循环一直执行,比如服务器的请求响应监听等循环条件一直我true就会变成死循环,在正常业务编程要避免死循环。会影响程序性能或造成程序卡死崩溃package原创 2021-10-06 11:14:45 · 80 阅读 · 0 评论 -
顺序结构,选择结构,反编译
顺序结构Java基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句的执行顺序结构是最简单的算法结构任何一个算法都离不开的一种基本算法结构package com.boss.struct;public class ShunXuDemo { public static void main(String[] args) { System.out.println("hello1"); System.out.println("hello2");原创 2021-10-05 17:50:55 · 61 阅读 · 0 评论 -
Scanner进阶
Scanner进阶package com.boss.scanner;import java.util.Scanner;public class Demo04 { public static void main(String[] args) { Scanner scanner= new Scanner(System.in); //从键盘接收数据 int i=0; float f=0.0f; System.out原创 2021-10-05 11:36:29 · 44 阅读 · 0 评论 -
Scanner对象
java 流程控制Scanner对象实现程序和人互动基本语法Scanner s=new Scannner(System.in);通过Scanne类的next()与nextLine()方法获取输入字符串,在读取一般使用hasNext()与hasNextLine()判断是否还有输入的数据next():一定要读取到有效字符后才可以结束输入对输入的有效字符之前遇到空白,next()方法会自动将其去掉只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。next()方法不能原创 2021-10-05 10:52:12 · 58 阅读 · 0 评论