- 博客(35)
- 收藏
- 关注
原创 自定义异常
自定义异常package com.exception.DemoTwo;//自定义的异常类public class MyException extends Exception { //传递数字>20,抛出异常 private int detail; public MyException(int a) { this.detail = a; } //toString:异常的打印信息 @Override public Strin
2021-03-30 01:18:13
107
原创 异常处理机制
异常处理机制1.抛出异常2.捕获异常关键字:try catch finally throw throwspackage com.exception;public class DemoOne { public static void main(String[] args) { int a = 1; int b = 0; //假设要捕获多个异常,异常范围要从小到大 try {//try监控区域 System
2021-03-30 00:57:23
75
原创 异常
异常1.检查性异常2.运行时异常3.错误java.lang.Throwable:Error和ExceptionError类对象由Java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。Exception中有个很重要的子类RuntimeException(运行时异常)...
2021-03-30 00:25:43
69
原创 内部类
内部类1.内部类就是在一个类的内部再定义一个类2.成员内部类3.静态内部类4.局部内部类5.匿名内部类成员内部类:package com.oop.DemoTen;public class Outer { private int num = 20; public void out(){ System.out.println("这是外部类的方法。"); } public class Inner{ public void in(){
2021-03-30 00:10:43
52
原创 接口
接口1.接口:只有规范,是抽象的集合,关键字interface2.实现接口:implements 接口3.接口可以多继承4.接口中所有定义的方法都是public abstract;所有定义的属性都是常量public static final5.接口不能被实例化,接口中没有构造方法eg:package com.oop.DemoNine;public interface UserService { //接口中所有定义的属性都是常量public static final int
2021-03-29 23:25:05
43
原创 抽象类
抽象类1.abstract关键字2.抽象方法:只有方法名字,没有方法的实现3.抽象类的所有方法,继承了它的子类都必须要实现它的全部方法,除非该子类也是抽象类4.extends单继承,接口可以实现多继承eg:package com.oop.DemoEight;//abstract抽象类public abstract class Action { //abstract抽象方法:只有方法名字,没有方法的实现 public abstract void doSomething();
2021-03-29 23:02:36
50
原创 static关键字
static关键字1.静态变量可以直接使用类名调用2.非静态方法可以直接调用静态方法package com.oop.DemoSeven;public class Student { private static String name;//静态变量 private int age; //非静态变量 public static void run(){ } public void eat(){ run();//非静态方法可以直接调用静态方法
2021-03-27 23:49:49
46
原创 instanceof和类型转换
instanceof和类型转换1.instanceof 判断一个对象是什么类型package com.oop.DemoSix;public class Teacher extends Person {}package com.oop.DemoSix;public class Student extends Person {}package com.oop.DemoSix;public class Person {}Object object = new Student()
2021-03-27 22:54:35
58
原创 多态
多态多态:基类的指针指向不同的派生类,其行为会有不同。1.一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多(父类,有关系的类)2.多态存在的条件:(1)有继承关系(2)子类重写父类的方法(3)父类的引用指向子类对象* 多态注意事项:* 1.多态是方法的多态,属性没有多态* 2.父类和子类存在联系 类型转换异常:ClassCastException* 3.存在的条件:继承关系 方法重写 父类的引用指向的是子类对象* 不能被重写的方法:(1)static修饰的方法 属于类,它不属
2021-03-27 01:23:57
52
原创 方法的重写
方法的重写重写:需要有继承关系,子类重写父类的方法。发生在两个类之间。静态方法:类的方法非静态方法:对象的方法1.方法名和参数列表必须相同。2.修饰符范围可以扩大。public>protected>default>private3.抛出的异常范围可以被缩小,不能被扩大。ClassNotFoundException---->Exception(大)“两同一小一大”为什么需要重写?1.父类的功能,子类不一定需要,或者不一定满足eg:package com.oop.D
2021-03-27 00:30:19
63
原创 封装、继承
封装、继承一、封装1.高内聚,低耦合2.属性私有,get/set二、继承1.java类中只有单继承,没有多继承2.关键字extends,是类与类之间的关系3.public》protected》defalut》private4.Java中,所有的类都默认继承Object类5.构造函数:先调用父类的构造函数,再调用子类的构造函数;析构函数:先调用子类的析构函数,再调用父类的析构函数6.super注意点:(1)super调用父类的构造方法,必须在构造方法的第一行;(2)super必须只能出
2021-03-25 00:39:00
122
原创 构造器
构造器1.一个类一定会存在一个默认的构造方法2.构造方法的特点:(1)必须和类的名字相同(2)必须没有返回类型,包括void3.一旦定义了有参构造,则无参构造必须显式定义;否则默认构造函数会无效==》方法的重载4.方法在栈中,new出来的对象放堆中,方法区也在堆中,静态变量放在静态存储区与类一起创建。package com.oop.DemoTwo;public class Person { //一个类即使什么都不写,也会存在一个构造方法 String name; /
2021-03-24 23:25:41
50
原创 面向对象
面向对象1.三大特性:封装、继承、多态2.值传递、引用传递引用传递:其实也是值传递,只不过该值为对象的地址值package com.oop;public class DemoTwo { public static void main(String[] args) { //引用传递:对象,本质还是值传递,但是该值为对象的地址值 Student student = new Student(); System.out.println(studen
2021-03-24 00:23:43
55
原创 稀疏数组
稀疏数组1.当一个数组中大部分元素为0或者为同一值的数组时,可以使用稀疏数组来保存该数组;2.稀疏数组的处理方式时:(1)记录数组一共有几行几列,有多少个不同值(2)把具有不同值的元素和行列及值记录在一个小规模数组中,从而缩小程序的规模package com.zmq.array;//稀疏数组public class DemoFour { public static void main(String[] args) { //1.创建一个数组 11行11列 0:没有棋子 1
2021-03-18 00:36:56
52
原创 冒泡排序
冒泡排序package com.zmq.array; import java.util.Arrays;//冒泡排序//1.比较数组中两个相邻的元素,如果第一个数比第二个数大,就交换它们的位置//2.每次比较,都会产生一个最大或最小的数字//3.下一轮则可以少一次排序//4.每次循环,直到结束//时间复杂度O(n^2)public class DemoThree {public static void main(String[] args) {int[] arrays = {1,
2021-03-17 23:31:52
55
原创 数组
数组package com.zmq.array;public class DemoOne {public static void main(String[] args) {Man[] man = {new Man(),new Man()};//引用类型的数组 int[] arrays = {1,2,3,4,5,6}; for (int x:arrays) {//for-each System.out.println(x); } System.out.p
2021-03-17 00:02:53
52
原创 java内存
Java内存1.堆:存放new的对象和数组;可以被所有的线程共享,不会存放别的对象引用2.栈:存放基本变量类型(会包含这个基本类型的具体数值);引用对象的变量(会存放这个引用在堆里面的具体地址)3.方法区:可以被所有的线程共享;包含了所有的class和static变量...
2021-03-16 23:59:49
62
原创 递归
递归1.递归的能力在于用有限的语句来定义对象的无限集合2.递归结构包括两部分(1)递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。(2)递归体:什么时候需要调用自身方法。package com.zmq.method;public class DemoFive { public static void main(String[] args) { System.out.println(f(6));//720 } //阶乘 6!=6*5*4*3*2*
2021-03-16 01:03:05
72
原创 可变参数
可变参数1.Jdk1.5开始,Java支持传递同类型的可变参数给一个方法2.在方法声明中,在指定参数类型后面加一个省略号(…);3.一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通参数必须在它之前声明。package com.zmq.method;public class DemoFour { public static void main(String[] args) { //调用可变参数的方法 printMax(1,2,9,3,5,
2021-03-16 00:41:49
48
原创 命令行传参
命令行传参1.在命令行中给main()方法传参package com.zmq.method;public class DemoTwo { public static void main(String[] args) { //args.length数组长度 for (int i = 0; i < args.length; i++) { System.out.println("args["+i+"]:"+args[i]);
2021-03-16 00:20:18
81
原创 方法的重载
方法的重载1.重载就是在一个类中,有相同的函数名称,但形参不同的函数2.方法的重载规则:(1)方法名称必须相同(2)参数列表必须不同(个数不同、或类型不同、或参数排列顺序不同等)(3)方法的返回类型可以相同也可以不同(4)仅仅返回类型不同不足以成为方法的重载实现理论:方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法;如果匹配失败,则编译器报错。以下代码结果为:Max=30.0 实际上调用的是int max(int,int)方法,只是最后的结果由int类型
2021-03-16 00:00:44
98
原创 Scanner对象的疑问
如下代码有疑问:输入的不是整数时,为什么10.1的值直接赋给了浮点数f,而没有提示输入小数类型?最后一段代码提示了输入长整数类型,是什么原因导致这样的不同?Scanner对象会有什么特殊的处理吗?目前Debug调试下没看出什么问题,是跟内存有关?package com.zmq.scanner;import java.util.Scanner;public class DemoThree {public static void main(String[] args) {Scanner scanner
2021-03-14 00:22:27
106
原创 Scanner对象
Scanner对象1.next():(1)一定要读取到有效字符后才可以结束输入;(2)对输入有效字符之前遇到的空白,next()方法会自动将其去掉;(3)只有输入有效字符后才将其后面输入的空白作为分隔符或结束符;(4)next()不能得到带有空格的字符串。package com.zmq.scanner;import java.util.Scanner;public class DemoOne {public static void main(String[] args) {//创建一个扫
2021-03-11 00:04:52
53
原创 三元运算符
三元运算符注意:字符串在+之前,则+后面的都为字符串;字符串在+之后,前面的依旧会运算package operator;public class DemoSix {public static void main(String[] args) { int a = 10; int b = 20; System.out.println(a+b);//30 //字符串连接 + String //字符串在+之前,则+后面的都为字符串;字符串在+之后,前面的依旧会运算
2021-03-10 00:17:02
51
原创 位运算符
位运算符1.位运算符<< 左移,数值变大,相当于乘以2;>>右移,数值变小,相当于除以2package operator;public class DemoFive {public static void main(String[] args) {/** A = 0011 1100* B = 0001 1101* A&B = 0001 1100* A|B = 0011 1101* A^B(A异或B) = 0010 0001* ~B(取反) = 1110
2021-03-09 23:57:41
62
原创 逻辑运算符
逻辑运算符关于&&运算符的短路运算package operator;//逻辑运算符 与(and) 或(or) 非(取反)public class DemoFour {public static void main(String[] args) {//短路运算int a = 2;boolean b = (a<1)&&(a++<4);//&&前的条件为false时,&&后的条件程序不会再判断boolean c = (a
2021-03-09 23:29:56
57
原创 自增自减运算
自增自减运算1.自增运算:++ 自减运算:–都是一元运算符package operator;public class DemoThree {public static void main(String[] args) {// ++自增 --自减 一元运算符int a = 1; int b = a++; //先b = a = 1 然后a = a + 1 = 2 System.out.println(a);//2 int c = ++a;//先a = a + 1 = 2 +
2021-03-09 23:08:38
94
原创 算数运算符
算数运算符要注意的是:1.如果两个操作或者多个操作中,有一个数为Long,则结果类型也为Long2.如果没有Long,无论是否有Int,则结果都为Intpackage operator;public class DemoTwo {public static void main(String[] args) {long a = 123123123123L;int b = 123;short c = 10;byte d = 8; //如果两个操作或者多个操作中,有一个数为Long,则
2021-03-09 22:50:57
64
原创 常量
常量1.常量:初始化后不能再改变值常量可以理解为一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。常量名一般使用大写字符。final 变量名 = 值;eg:final double PI = 3.14;public class DemoFive { //修饰符,不存在先后顺序 static final或final static都可 static final double PI = 3.14; public static void main(String[] a
2021-03-08 23:08:27
1256
原创 变量作用域
变量作用域1.类变量类变量:static关键字2.实例变量实例变量:从属于对象:如果不自行初始化,所有的数值类型的默认值为0或0.0;布尔值则默认是false;除了基本类型,其余的默认值都是null3.局部变量局部变量:必须声明和初始化值public class Demofour { //属性:变量 //类变量:static关键字 static double salary = 3000; //实例变量:从属于对象:如果不自行初始化,所有的数值类型的默认值为0
2021-03-08 22:55:41
43
原创 类型转换
类型转换1.运算中,不同类型的数据先转化为同一类型,然后进行运算由低到高byte,char,short->int->long->float->double/* 注意点:* 1.不能对布尔值进行转换* 2.不能把对象类型转换为不相干的类型* 3.在把高容量转换到低容量的时候,强制转换* 4.转换的时候可能存在内存溢出,或者精度问题* */精度问题:System.out.println((int)21.8);//21System.out.println((
2021-03-07 12:10:25
52
原创 Java数据类型
Java数据类型一、基本数据类型1.基本数据类型包括:数值类型和boolean类型(1)数值类型包括:整数类型、浮点类型、字符类型整数类型:byte(占一个字节,范围:-128~127)short(占两个字节,范围:-32768~32767)int(占四个字节,范围:-2147483648~2147483647)long(占八个字节,范围:-9223372036854775808~9223372036854775807)浮点类型:float(占四个字节)double(占八个字节)字符类
2021-03-06 00:45:45
49
原创 Java标识符
Java标识符(1)所有的标识符都应该以字母(A-Z或a-z)、美元符($ ),或者下划线(_ )开始;(2)首字符之后可以是字母(A-Z或a-z)、美元符($)、下划线(_)或数字的任何字符组合;(3)不能使用关键字作为变量名或方法名;(4)标识符大小写敏感...
2021-03-05 23:46:28
47
原创 安装JDK
1.登录https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html下载自己电脑对应版本的jdk8(注意:要选择同意协议)2.双击安装(记住安装路径)3.配置环境变量(系统环境变量)电脑-》右键-》属性-》环境变量-》系统环境变量点击新建:变量名:JAVA_HOME变量值:安装路径配置path变量:%JAVA_HOME%\bin%JAVA_HOME%\jre\bin 4.测试JDK是否安装成功cmd
2021-03-04 00:26:10
60
1
原创 卸载JDK
1.删除JAVA的安装目录2.删除JAVA_HOME3.删除path下java的目录4.cmd命令行下运行java -version,出现报错即可
2021-03-04 00:11:42
105
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人