跟着狂神老师学java
Daibinbin_
这个作者很懒,什么都没留下…
展开
-
捕获和抛出异常
异常处理机制异常处理的五个关键字:try、carch、finally、throw、throws。捕获异常:try、catch、finallypublic class Demo01 { public static void main(String[] args) { int a = 1; int b = 2; //捕获异常一定要有try、catch,finally可有可以无(它主要用在IO 资源 关闭)原创 2021-03-14 14:44:24 · 443 阅读 · 0 评论 -
什么是异常
异常什么是异常实际工作中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求、你的程序打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数据,数据可能是空的等。我们的程序在跑着,内存或硬盘就满了。等等。软件程序在运行过程中,非常可能遇到刚刚提到的这些异常问题,我们叫异常,英文:Exception,意思是例外。这些,例外情况,或者叫异常,怎么让我们写的程序作出合理的处理。而不至于程序奔溃。异常指程序运行中出现的不期而至的各种,如:文件找不大、网络连接失败、原创 2021-03-14 01:09:50 · 416 阅读 · 0 评论 -
内部类
内部类内部类就是在一个类的内部在定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就成为内部类,而A类相对B类来说就是外部类。成员内部类public class Outer { private int id = 10; public void out(){ System.out.println("这里是外部类"); } public class Inner{ public void in(){原创 2021-03-14 00:15:14 · 111 阅读 · 0 评论 -
接口
接口普通类:只有具体实现抽象类:具体实现和规范(抽象方法)只有规范!自己无法写方法,只有定义接口就是规范,定义的是一组规则,体现了现实世界中“如果你是…则必须能…的思想。如果你是汽车,就必须会跑、如果你是飞机,就必须会飞。接口的本质是契约,就像我们法律一样,制定好后大家必须遵守。OO(面向)的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计模式都是针对具备了抽象能力的语言(c++、java、c#等),就是因为设计模式所研究的,实际上就是如何合理的去抽象。声明类的关键字是cl原创 2021-03-13 14:04:11 · 106 阅读 · 0 评论 -
抽象类
抽象类abstract 抽象类:java里的类是单继承的(extends),但接口是多继承的public abstract class Demo01 {}abstract 抽象方法,只有方法名,没有方法的实现public abstract void dosomething();注意点:不能new这个抽象类,只能靠子类去实现它:约束!抽象中可以写普通方法, 抽象方法必须在抽象类中(如果类中存在抽象方法就必须是抽象类)抽象类的所有方法,继承它的子类,都必须要实现(重写)它原创 2021-03-13 14:01:49 · 93 阅读 · 0 评论 -
static关键字详解
static关键详解方法:静态方法可以共享给它方法非静态方法的调用必须要new出来才能调用//还有方法public static void run(){ //静态方法//调用不了非静态方法,必须要new出来 new Student().go();}public void go(){ //非静态方法//在非静态或者类中的其他方法中,可以共享调用静态方法}属性:非静态的属性不能通过类名来调用。可以通过类名调用属性来判断它是否为静态属性。public class原创 2021-03-13 00:05:19 · 103 阅读 · 0 评论 -
多态
多态即同一个方法可以根据发送对象的不同而采用多种不同的行为方式。一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多(父类、有关系的类:object)。多态存在的条件有继承关系(父类、有关系的类:object)子类重写父类的方法父类的引用指向子类对象注意事项:多态是方法的多态,属性是没有动态的(静态的属性,动态的方法)。父类和子类有联系的 类型转换异常:ClassCastExCeption!存在条件:继承关系、方法需要重写、父类引用指向子类对象!原创 2021-03-12 19:11:03 · 113 阅读 · 0 评论 -
继承
继承继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。extends的意思是“扩展”。子类是父类的扩展。public class person{}public class student extends person{}//这样就是继承了person这个父类(基类)Java中只有单继承,没有多继承。可以理解成一个儿子只能有一个父亲,但一个父亲可以有很多个儿子。继承是类和类之间的一种关系,除此之外,类和类的之间的关系还有依赖、组合、聚合等。继承关系的两个类,一个原创 2021-03-12 14:47:16 · 99 阅读 · 0 评论 -
封装
封装该露的露,该藏的藏我们程序设计要追求"高内聚,低耦合",高内聚就是类的内部数据操作细节自己完成,不匀许外部干涉;低耦合:仅暴露少量的方法给外部使用。封装(数据的隐藏)通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。记住这句话就够了:属性私有(private),get/set。封装的好处:提高程序的安全性,保护数据。隐藏代码的实现细节。统一接口: get/set系统可维护增加了//类 private(私有)它和publi原创 2021-03-12 14:46:24 · 100 阅读 · 0 评论 -
简单小结类与对象
类与对象小结类与对象:类是一个模板:抽象;对象是一个实例。方法:定义和调用对应的应用:在java中除了基本类型(byte、int、short、long、float、duoble、char、boolean(true和false))外的都是引用类型(类、接口、数组)。对象是通过引用类操作的:栈-----》堆(指向对象的地址)属性:字段(Field) 成员变量默认初始化数字:0 / 0.0char:u0000boolean:false引用:null原创 2021-03-10 21:29:40 · 82 阅读 · 0 评论 -
创建对象内存分析
创建对象内存分析应用小结的不是很到位,还有很多地方也迷迷糊糊的,有大神发现错误的可以私发我,谢谢!栈(stack):栈中主要寄放一些基本变量(8大基本类型)、对象引用。对象是不会放置里面的。堆(heap):用于存放new出来的对象(类的实例)与数组。方法区(method):方法区在堆空间内,用于存放:类的代码信息方法和静态变量常量池:字符串常量等,具有共享机制下面通过代码和内存分析图进行分析:public class Application {原创 2021-03-10 21:02:22 · 125 阅读 · 0 评论 -
创建与初始化对象
类与对象的关系类是一种抽象的数据类型,它是对某一类事物整体的描述/定义,但是并不能代表一个具体的事物。动物、植物、手机、电脑。。。Perosn类、Pet类、Car类等,这些类都是用来描述/定义某一类具体事物应该具备的特点和行为。对象是抽象概念的具体实例张三就是人的一个具体实例,张三家里的旺财就是狗的一个具体实例。能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念。创建与初始化对象使用new关键字创建对象。//学生类public class Student原创 2021-03-10 14:38:26 · 169 阅读 · 0 评论 -
回顾方法及加深
回顾方法及加深方法的定义修饰符:public static…返回类型:返回类型要和返回值类型相同break:强制结束程序。return:为方法结束语句,只要在方法结束输入return 和返回值;后面输入的内容会报错方法名:驼峰命名 和见名思意参数列表异常抛出方法的调用静态方法:有static的为静态方法静态方法要怎么去调用://对象名.方法名student.say();非静态方法:没有static的为非静态方法public class Student { p原创 2021-03-10 14:36:57 · 143 阅读 · 0 评论 -
什么是面向对象
对象过程 & 面向对象面向过程思想步骤清晰简单,第一步做什么…第二步做什么面向过程比较适合处理一些简单的问题面向对象思想物以类聚,分类的思维模式,思考问题首先会解决问题需要那些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。面向对象适合处理复杂的问题,适合处理需要多人协作的问题!对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。什么是原创 2021-03-10 14:35:51 · 91 阅读 · 0 评论 -
稀疏数组
稀疏数组稀疏数组它一种数据结构当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方式是:记录数组一共有几行几列,有多少个不同值把具体不同的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模如图左边是原始数组。右边是稀疏数组练习题:需求:创建一个11*11的二维数组 0:没有棋子 1:等于黑棋 2:等于白棋输出原始数组输出稀疏数组将稀疏数组还原成原始数组public class ArrayDemo08原创 2021-03-08 16:32:49 · 160 阅读 · 3 评论 -
冒泡排序
冒泡排序冒泡排序无疑是最为出名的排序算法之一,总共有八大排序!冒泡的代码还是相当简单的,两层循环,外层是循环次数,内层是依次比较。我们看到嵌套循环,应该立马就可以得出这个算法的时间复杂度为O(n2)。import java.util.Arrays;/* 冒泡排序: 1.比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换它们的位置 2.每次比较,都会产生出一个最大的值,或者一个最小的值 3.下次轮则可以少一次排序! 4.依次循环,直到结束!原创 2021-03-07 23:55:28 · 136 阅读 · 1 评论 -
Arrays类
Arrays类数组的工具类java.util.Arrays由于数组对象本身没有并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本操作。查看JDK帮助文档 APIArrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而“不用”使用对象类调用(注意:是“不用”而不是"不能")具体以下常用功能:打印数组元素:通过toString方法:public class ArrayD原创 2021-03-07 23:54:46 · 90 阅读 · 0 评论 -
多维数组
多维数组多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一堆数组,其每一个元素都是一个一堆数组。二维数组int a[][] = new int[2][5];解析:以上二维数组a可以看成一个两行五列的数组。public class ArrayDemo05 { public static void main(String[] args) { /*多维数组 怎么定义多维数组,在数组类型后面加两个[][]中括号 那下面这行代码代表什原创 2021-03-07 19:58:29 · 119 阅读 · 0 评论 -
数组的使用
数组的使用普通for循环int[] arrays = {1,2,3,4,5};求数组的元素for (int i = 0; i <arrays.length ; i++) { System.out.println(arra求数组中元素的和int sum = 0; //定义一个变量for (int i = 0; i <arrays.length ; i++) { sum = sum+arrays[i]; //将循环出来的每一个数组元素加上原创 2021-03-07 19:57:27 · 124 阅读 · 0 评论 -
数组
数组数组的定义数组是相同类型数据的有序组合。数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作为一个数组元素,每个数组元素可以通过一个下标来访问它们。数组声明和创建首先必须声明数组变量,才能在程序中使用数组,下面是声明数组变量的语法:dataType[]arrayRefVar; //首先方法 ☆或dataType arrayRefVar[];//效果相同,但不是首选方法(它是c和c++的语法)Java语言使用new操作符来创建数组,语法原创 2021-03-06 18:07:56 · 141 阅读 · 0 评论 -
递归
递归A方法调用B方法,我们很容易理解!递归就是:A方法调用A方法!就是自己调用自己利用递归可以简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转换为一个与原问题相似的规模较小的问题来求解,递归策略只需要少量的程序就可描述出解题过程所以需要多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限聚合。递归结构包括两个部分:递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。递归体:什么时候需要调用自身方法。public cla原创 2021-03-03 20:33:45 · 165 阅读 · 1 评论 -
可变参数
可变参数JDK 1.5 开始,Java支持传递同类型的可变参数给一个方法。在方法声明中,在指定参数类型后加一个省略号(…).一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。public class Demo04 { public static void main(String[] args) { printMax(35,35.4,78,54,12.5,41); printMax(new double[]{1,2原创 2021-03-03 20:33:03 · 194 阅读 · 1 评论 -
命令行传参
命令行传参有时候你希望运行一个程序的时候在传递给它消息。这要靠传递吗命令行参数给main()函数实现。public class Demo03 { public static void main(String[] args) { //命令行传参 //args.length:数组长度 for (int i = 0; i < args.length ; i++) System.out.println("args["+i+原创 2021-03-03 20:32:35 · 197 阅读 · 1 评论 -
方法重载
方法重载重载就是在一个类中,有相同的函数名称,但形参不同的函数。public class Demo02 { public static void main(String[] args) { //max(20,20)是实际参数:调用方法时实际传給方法的数据。 int max = max(20, 20); System.out.println(max); } //比较大小 //max(int num1,int num2)是形原创 2021-03-03 20:31:55 · 161 阅读 · 1 评论 -
什么是方法、定义、调用
何谓方法System.out.println(),它是什么呢?答:System是系统的类;out是类的对象;println()是对象下的方法。Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含类或对象中方法在程序中被创建,在其他地方呗引用设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成1个功能,这样利于我们后期的扩展。回顾:方法的命名规则?答:驼峰原原创 2021-03-03 20:31:30 · 254 阅读 · 1 评论 -
增强for
增强for循环java5 引入了一种主要用于数组或集合的增强型for循环。java增强for循环语法格式如下;for(声明语句:表达式){ //代码语句}声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。表达式:表达式是要访问的数组名,或者是返回值为 数组的方法。public class PulsForDemo { public static void main(String[] args)原创 2021-03-01 22:21:28 · 115 阅读 · 0 评论 -
break、continue
Breakbreak在任何循环语句的主体部分,均可以用break控制循环流程。break用于强行退出循环,不执行循环中剩余的语句(break语句也在switch语句中使用)。public class BreakDemo { public static void main(String[] args) { //break语句 int i = 0; while (i<100){ i++; Sy原创 2021-03-01 22:20:41 · 140 阅读 · 0 评论 -
循环结构
循环结构while循环while是最基本的循环,他的结构为while(布尔表达式){ //循环内容}只要布尔表达式为true,循环就会一直循环下去。我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环。少部分情况需要循环一直执行,比如服务器的请求响应监听等。循环条件一直为true就会造成无线循环【死循环】,我们正常的业务编辑过程中应该尽量避免死循环。会影响程序性能或者造成程序卡死奔溃!思考:计算1+2+3+…+100=?publi原创 2021-02-28 22:07:58 · 151 阅读 · 0 评论 -
顺序结构、选择结构
顺序结构Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。顺序结构是最简单的算法结构。语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。> System.out.println("hello world1" ); System.out.println("hello world2" ); System.out.println("hello wo原创 2021-02-28 16:43:00 · 153 阅读 · 0 评论 -
用户交互Scanner
Scanner对象之前我们学的基本语法中我们并没有实现程序和人的交互,但Java给我们提供了一个工具类,我们可以获取用户输入。Java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户输入。基本语法:Scanner scanner = new Scanner(scanner.in);通过Scanner类的next()与nextLine()方法获取输入字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。原创 2021-02-24 22:53:32 · 108 阅读 · 0 评论 -
包机制、javadoc
包机制为了更好的组织类,java提供了包机制,用于区别类名的命名空间。包语法的语法格式为:package pkg1[.pkg[.pkg...]] //这句话必须放在程序的第一行,不然要报错一般利用公司的域名倒置作为包名:如www.baidu.com---->com.baidu.www为了能够使用某一个包的成员,我们需要在java程序中明确导入该包。使用“import”语句可完成此功能import package[.package2...].(classname|*);//原创 2021-02-23 22:04:09 · 174 阅读 · 0 评论 -
Java支持的运算符
Java支持以下运算符目录1. 算数运算符2. 赋值运算符3. 关系运算符4. 逻辑运算符5. 位运算符6. 条件运算符7. 扩展赋值运算符算数运算符:+,-,*,/,%,++,–二元运算符 //二元运算符(需要两个数运算称为二元运算符) //CTRL+D可以将内容复制下一行,非常好用! int a = 10; int b = 20; int c = 30; int d = 40;原创 2021-02-22 00:14:30 · 265 阅读 · 0 评论 -
类型转换
类型转换由于java是强类型语言,所以要进行有些运算的时候,需要进行用到类型转换。低--------------------------------------------》 高byte ,short,char --> int -->float–>double(浮点数的优先等级要比整数高)运算中,不同类型的数据先转换为同一类型,然后再进行运算。强制类型转换(从高到低)int i = 128; //128byte b = (byte)i;//-128 #强制转换导原创 2021-02-19 23:28:34 · 133 阅读 · 0 评论