JavaSE学习
maby_
这个作者很懒,什么都没留下…
展开
-
异常03:自定义异常及经验小结
自定义异常使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。用户自定义异常类,只需要继承Exception类即可。在程序中使用自定义异常类,大体可分为以下几个步骤:1、创建自定义异常类。2、在方法中通过throw关键字抛出异常对象。3、如果在当前抛出异常的方法中处理异常,可以使用try…catch语句捕获并处理;否则再方法的声明出通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。4、在出现异常地方的调用者中捕获并处理异常。.原创 2020-06-07 14:42:52 · 201 阅读 · 0 评论 -
异常02:捕获和抛出异常
异常处理机制抛出异常捕获异常异常处理五个关键字try、catch、finally、throw、throwspackage com.exception;public class Demo01 { public static void main(String[] args) { new Demo01().a(); } public void a(){ b(); } public void b(){ .原创 2020-06-07 09:53:30 · 267 阅读 · 0 评论 -
异常01:Error和Exception
什么是异常实际生活中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的需求,你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数据,数据可能是空的等。我们的程序在跑着,内存或硬盘可能满了,等等。软件程序在运行的过程中,非常可能遇到刚刚提到的这些异常问题,我们叫异常,英文是:Exception,意思是例外。这些,例外情况,或者叫异常,怎么让我们写的程序做出合理的处理。而不至于程序崩溃异常指程序运行中出现的不期而至的各种情况,如:文件找不到、网络连接.原创 2020-06-07 09:17:34 · 217 阅读 · 0 评论 -
面向对象17:N种内部类
内部类内部类就是在一个类的内部再定义一个类,比如,A类中定义个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了。1、成员内部类2、静态内部类3、局部内部类4、匿名内部类package com.oop.demo10;//1、成员内部类public class Outer { private int id =5; public void out(){ System.out.println("Outer"); .原创 2020-06-07 08:28:08 · 115 阅读 · 0 评论 -
面向对象16:接口的定义与实现
接口普通类:只有具体实现抽象类:具体实现和规范(抽象方法)都有!接口:只有规范!自己无法写方法专业的结束~接口就是规范,定义的是一组规则,体现了现实直接中“如果你是…则必须能…”的思想。如果你是天使,则必须能飞。如果你是汽车,则必须能跑。如果你是好人,则必须干掉坏人;如果你是坏人,则必须欺负好人。接口的本质是契约,就像我们人间的法律一样。指定好后大家都遵守。OO的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计模式都只针对具备能力的语言(比如C++、java、C#等),就是.原创 2020-06-07 00:04:45 · 144 阅读 · 0 评论 -
面向对象15:抽象类
package com.oop.demo08;//abstract 抽象类: 单继承 接口可以多继承public abstract class Action { //约束~有人帮我们实现~ //abstract,抽象方法,只有方法名,没有方法体 public abstract void doSomething(); public void go(){}; //1.不能new这个抽象类,只能靠子类去实现它:约束! //.原创 2020-06-06 23:35:50 · 118 阅读 · 0 评论 -
面向对象14:static关键字详解
package com.oop.demo07;public class Student { private static int age; private String name; public void say(){ go(); } public static void go(){ new Student().say(); } public static void main(String[] args.原创 2020-06-06 23:25:04 · 122 阅读 · 0 评论 -
面向对象13:instanceof和类型转换
package com.oop.demo06;public class Application2 { public static void main(String[] args) {// Object --> String// Object --> Person --> Student// Object --> Person --> Teacher Object object = new Student原创 2020-06-06 23:07:19 · 113 阅读 · 0 评论 -
面向对象12:什么是多态
多态即同一个方法可以根据发送对象的不同而采用多种不同的行为方式。一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多多态存在的条件有继承关系子类重写父类方法父类引用指向子类对象注意:多态是方法的多态,属性没有多态性。instanceofpackage com.oop.demo06;public class Person { public void say(){ System.out.println("Person"); .原创 2020-06-06 22:07:47 · 196 阅读 · 0 评论 -
面向对象11:方法重写
package com.oop.demo05;public class B { public void say(){ System.out.println("I'm B"); }}package com.oop.demo05;public class A extends B {// public void say(){// System.out.println("I'm A");// } @Override .原创 2020-06-06 21:45:12 · 98 阅读 · 0 评论 -
面向对象10:Super详解
package com.oop.demo05;//在Java中,所有的类,都默认直接或间接继承Object类//Person 人: 父类public class Person /* extends Object */{ protected String name = "epfox2"; //参数私有无法继承 public void print(){ System.out.println("epfox2"); } public .原创 2020-06-06 21:24:58 · 108 阅读 · 0 评论 -
面向对象09:什么是继承
继承继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。extands的意思是“拓展”。子类是父类的拓展。Java中类只有单继承,没有多继承!继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示。子类和父类之间,从意义上讲应该具有“is a"的关系。object类super方法重写package com.oop.原创 2020-06-06 20:41:18 · 115 阅读 · 0 评论 -
面向对象08:封装详解
封装该露的露,该藏的藏我们程序设计要追求“高内聚、低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合就是仅暴露少量的方法给外部使用。封装(数据的隐藏)通常,应该禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。记住这句话就够了:属性私有,get/setpackage com.oop.demo04;/* 1.提高程序的安全性,保护数据 2.隐藏代码的实现细节 3.统一接口 4.系统可维护性增加.原创 2020-06-06 20:40:01 · 151 阅读 · 0 评论 -
面向对象07:简单小结类和对象
package com.oop;public class Application { /* 1、类与对象 类是一个模板:抽象,对象是一个具体的实例 2、方法 定义、调用 3、对象的引用 引用类型: 基本类型(8) 对象是通过引用来操作的: 栈--->堆(地址) 4、属性:字段Field 成员变量 默认初始化: 数字: 0 0.0 .原创 2020-06-05 22:55:14 · 70 阅读 · 0 评论 -
面向对象06:创建对象内存分析
package com.oop.demo02;public class Pet { public String name; public int age; //无参构造 public void shout(){ System.out.println("叫了一声"); }}package com.oop.demo02;public class Application3 { public static void.原创 2020-06-05 22:46:02 · 88 阅读 · 0 评论 -
面向对象05:构造器详解
package com.oop.demo02;public class Person { String name; int age; public Person() { } public Person(String name) { this.name = name; } public Person(String name, int age) { this.name = name; this.ag.原创 2020-06-05 22:45:22 · 111 阅读 · 0 评论 -
面向对象04:类与对象的创建
类和对象的关系类是一种抽象的数据类型,它是对某一类事物先整体描述/定义,但是并不能代表某一个具体的事物。动物、植物、手机、电脑…Person类、Pet类、Car类等,这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为对象是抽象概念的具体实例张三就是人的一个具体实例,张三家里的旺柴就是狗的一个具体实例。能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念。创建与初始化对象使用new关键字创建对象使用new关键字创建的时候,除了分配内存空间之外,还会给创.原创 2020-06-05 22:44:47 · 87 阅读 · 0 评论 -
面向对象03:回顾方法的调用
package com.oop.demo01;public class Demo02 { public static void main(String[] args) { //静态方法 static Student.say1(); //非静态方法 Student student = new Student(); student.say2(); } public void a1(){ .原创 2020-06-05 22:44:18 · 91 阅读 · 0 评论 -
面向对象02:回顾方法的定义
回顾方法及加深方法的定义修饰符返回类型break:跳出switch,结束循环 和 return 的区别方法名:注意规范 见名知意参数列表: (参数类型, 参数名) …异常抛出方法的调用:递归静态方法非静态方法形参和实参值传递和引用传递this关键字package com.oop;import java.io.IOException;//Demo01 类public class Demo01 { //main方法 public st.原创 2020-06-05 00:04:56 · 125 阅读 · 0 评论 -
面相对象01:什么是面相对象
面相过程&面相对象面向过程思想步骤清晰简单,第一步做什么,第二步做什么…面对过程适合处理一些较为简单的问题面向对象思想物理类聚,分类的思维模式,思考问题首先会考虑问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。面向对象适合处理复杂的问题,适合处理需要多人协作的问题!对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。什么是面向.原创 2020-06-04 23:52:23 · 1294 阅读 · 2 评论 -
Java数组09:稀疏数组
稀疏数组:需求:编写五子棋游戏中,有存盘退出和续上盘的功能。分析问题:因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据。解决:稀疏数组稀疏数组的介绍当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方式是:记录数组一共有几行几列,有多少个不同值把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模如下图:左边是原始数组,右边是稀疏数组package com.epfox.array;pu.原创 2020-06-04 23:52:02 · 97 阅读 · 0 评论 -
Java数组08:冒泡排序
冒泡排序无疑是最为出名的排序算法之一,总共有八大顺序!冒泡的代码还是相当简单的,两层循环,外层冒泡轮数,里层依次比较,江湖中人尽皆知。我们看到嵌套循环,应该立马就可以得出这个算法的时间复杂度为O(n2)。思考:如何优化?package com.epfox.array;import java.util.Arrays;public class ArrayDemo07 { public static void main(String[] args) {// int[]..原创 2020-06-04 22:59:24 · 118 阅读 · 0 评论 -
Java数组07:Array类讲解
数组的工具类java.util.Arrays由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作。查看JDK帮助文档Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而“不用”使用对象来调用(注意:是“不用”而不是“不能”)具有以下常用功能:给数组赋值:通过fill方法。对数组排序:通过sort方法,按升序。比较数组:通过equals方法比较数组中元素值是否相等。查..原创 2020-06-04 22:41:32 · 116 阅读 · 0 评论 -
Java数组07:Array类讲解
数组的工具类java.util.Arrays由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作。查看JDK帮助文档Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而“不用”使用对象来调用(注意:是“不用”而不是“不能”)具有以下常用功能:给数组赋值:通过fill方法。对数组排序:通过sort方法,按升序。比较数组:通过equals方法比较数组中元素值是否相等。查..原创 2020-06-04 22:37:21 · 131 阅读 · 0 评论 -
Java数组06:二维数组
数组使用For-Each循环数组作方法入参数组作返回值package com.epfox.array;public class ArrayDemo03 { public static void main(String[] args) { int[] arrays = {1,2,3,4,5}; //打印全部的数组元素 for (int i = 0; i < arrays.length; i++) { Sy.原创 2020-06-04 22:02:03 · 88 阅读 · 0 评论 -
Java数组05: 数组的使用
数组使用For-Each循环数组作方法入参数组作返回值package com.epfox.array;public class ArrayDemo03 { public static void main(String[] args) { int[] arrays = {1,2,3,4,5}; //打印全部的数组元素 for (int i = 0; i < arrays.length; i++) { Sy.原创 2020-06-04 00:03:52 · 97 阅读 · 0 评论 -
Java数组03:三种初始化及内存分析、04:下标越界及小结
Java数组03:三种初始化及内存分析内存分析Java内存分析:堆:存放new的对象和数组可以被所有的线程共享,不会存放别的对象引用栈:存放基本变量类型(会包含这个基本类型的具体数值)引用对象的变量(会存放这个引用在堆里面的具体地址)方法区:可以被所有的线程共享包含了所有的class和static变量[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P75d9HP6-1591195596365)(C:\Users\Adminis原创 2020-06-04 00:00:37 · 250 阅读 · 0 评论 -
Java数组01:什么是数组、02:数组声明创建
Java数组01:什么是数组数组的定义数据是相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定的先后次序排列而成。其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问他们。Java数组02:数组声明创建首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:dataType[] arrayRefvar; //首选的方法或者dataType arrayRefVar[]; //效果相同,但不是首选方法Java语言使用new操作符来原创 2020-06-03 22:04:43 · 100 阅读 · 0 评论 -
Java方法06:递归讲解
递归A方法调用B方法,我们很容易理解!递归就是:A方法调用A方法!就是自己调用自己利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题想死的魔鬼较小的问题来求解,递归策略只需少量的程序就可以描述出阶梯过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。递归结构包括两个部分:递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。递归体:什么时候需要调用自身方法。package com.epf.原创 2020-06-03 21:45:57 · 115 阅读 · 0 评论 -
Java方法05:可变参数
可变参数JDK1.5开始,Java支持传递同类型的可变参数给一个方法。在方法声明中,在指定参数类型后面加一个省略号(…)。一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。package com.epfox.method;public class Demo04 { public static void main(String[] args) { printMax(1,2,3,4,5.5,7.7); print.原创 2020-06-03 21:10:39 · 78 阅读 · 0 评论 -
Java方法04:命令行传递参数
命令行传参有时候你希望运行一个程序时候再传递给它信息。这要靠传递命令行参数给main()函数实现。package com.epfox.method;public class Demo03 { public static void main(String[] args) { for (int i = 0; i < args.length; i++) { System.out.println("args["+ i +"]:" + args[i].原创 2020-06-03 21:10:03 · 110 阅读 · 0 评论 -
Java方法03:方法的重载
方法的重载重载就是在一个类中,有相同的函数名称,但形参不同的函数。方法的重载的规则:方法名称必须相同。参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。方法的返回类型可以相同也可以不相同。仅仅返回类型不同不足以成为方法的重载。实际理论:方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。package com.epfox.method;public class Demo02 { pub.原创 2020-06-03 21:09:30 · 86 阅读 · 0 评论 -
java方法02:方法的定义和调用
方法的定义Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法:方法包含一个方法头和一个方法体。下面是一个方法的所有部分:修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。返回值类型:方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。这种情况下,returnValueType是关键字void。方法名:是方法的实际名称。方法名和参数表共同构成方法签名。.原创 2020-06-03 21:08:56 · 302 阅读 · 0 评论 -
java方法01:什么是方法?
何谓方法System.out.println(),那么它是什么呢?Java方法是语句的集合,他们在一起执行一个功能。方法是解决一类问题的步骤的有序集合方法包含于类或对象中方法在程序中被创建,在其他地方被引用设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成1个功能,这样利于我们后期的扩展。package com.epfox.method;public class Demo01 { //main.原创 2020-06-03 21:08:23 · 105 阅读 · 0 评论 -
Java流程控制12:打印三角形和Debug
package com.epfox.struct;public class TestDemo { public static void main(String[] args) { for (int i = 1; i <= 5; i++) { for (int j = 5; j >=i ; j--) { System.out.print(" "); } for (i.原创 2020-06-03 21:07:50 · 145 阅读 · 0 评论 -
Java流程控制11:break、continue、goto
break continuebreak在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)continue语句用在循环与具体中,用于终止某次循环过程,既跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。关于goto关键字goto关键字很早就在程序设计语言中出现。尽管goto扔是Java的一个保留字,但并未在语言中得到正式使用;java没有goto。然而,在break和continu.原创 2020-06-03 21:07:10 · 171 阅读 · 0 评论 -
Java流程控制10:增强for循环
增强for循环这里我们先只是见一面,做个了解,之后数组我们重点使用Java5 引入了一种主要用于数组或集合的增强型for循环。Java增强for循环语法格式如下:for(声明语句 : 表达式){ //代码句子}声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。起作用域限定在循环语句块,其值与此时数组元素的值相等。表达式:表达式是要访问的数组名,或者是返回值为数组的方法。package com.epfox.struct;public cl.原创 2020-06-03 21:06:39 · 151 阅读 · 0 评论 -
Java流程控制08:For循环详解
For循环虽然所有循环结构都可以用while或者do…while表示,但Java提供了另一种语句——for循环,使一些循环结构变得更加简单。for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环机构。for循环执行的次数是在执行前就确定的。语法格式如下:for(初始化;布尔表达式;更新){ //代码语句}练习1:计算0到100之间的奇数和偶数的和练习2:用while或for循环输出1-1000之间能被5整除的树,并且每行输出3个练习3:打印九九乘法.原创 2020-06-01 21:11:55 · 132 阅读 · 0 评论 -
Java流程控制07:DoWhile循环
do…while 循环对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。do…while循环和while循环相似,不同的是,do…while循环至少会执行一次。do { //代码语句}while(布尔表达式);While和do-While的区别:while先判断后执行。dowhile是先执行后判断!Do…while总是保证循环体会被至少执行一次!这是他们的主要区别。package com.epfox.str.原创 2020-06-01 20:53:00 · 179 阅读 · 0 评论 -
Java流程控制06:While循环详解
循环结构while循环do…while 循环for 循环在Java5中引入了一种主要用于数组的增强型for循环。while循环while是最基本的循环,它的结构为:while(布尔表达式){ //循环内容}只要布尔表达式为true,循环就会一直执行下去。我们大多数情况会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环。少部分情况需要循环一直执行,比如服务器的请求响应监听等。循环条件一直未true就会造成无线循环(死循环),我们正常的业务变.原创 2020-06-01 20:52:13 · 152 阅读 · 0 评论