- 博客(40)
- 收藏
- 关注
原创 【java疑问】什么是实例化?实例化有什么用处?
public class Draft { public static void main(String[] args) { Person p1 = new Person(); p1.name = "小李"; p1.age = 1; p1.laugh(); } public static class Person { String name; int age; pub
2021-12-01 01:20:16
2993
2
原创 【java基础】动态创建对象执行方法
有了Class对象,能做什么 调用指定的方法 setAccessible package Study.reflection; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * 动态的创建对象,通过反射 * @date 202
2021-11-30 21:49:09
323
原创 【java基础】获取类的运行时结构
获取类运行时类的完整结构 通过反射获取运行时类的完整结构 Field、Method、Constructor、Superclass、Interface、Annotation Field、Method、Constructor、Superclass、Interface、Annotation 实现的全部接口 所继承的父类 全部的构造器 全部的方法 全部的Field注解 。。。 /** * @date 2021/11/30 19:21 */ public class Test08 { public s
2021-11-30 20:59:14
324
原创 【java基础】java内存分析
java内存分析 了解类的加载过程 类的加载与ClassLoader的理解 /** * @date 2021/11/30 14:37 */ public class Test05 { public static void main(String[] args) { A a = new A(); System.out.println(a); } } class A{ static { System.out.println("A类
2021-11-30 19:17:54
221
原创 【java基础】反射
反射(Reflection) Java反射机制研究及应用 Java反射机制提供的功能 ➢在运行时判断任意一个对象所属的类 ➢在运行时构造任意一个类的对象 ➢在运行时构造任意一个类的对象 ➢在运行时获取泛型信息 ➢在运行时调用任意一个对象的成员变量和方法 ➢在运行时处理注解 ➢生成动态代理 Java反射的优点和缺点 优点: ➢可以实现动态创建对象和编译,体现出很大的灵活性 缺点: ➢对性能有影响。使用反射基本上是一种解释操作,我们可以告诉JVM,我们希望做什么并且它满足我们的要求。这类操作总是慢于直接执行相同
2021-11-30 14:22:59
287
原创 【java基础】注解
注解(Annotation) Annotation是从JDK5.0开始引入的新技术。 Annotation的作用: 不是程序本身,可以对程序作出解释.(这一点和注释(comment)没什么区别) 可以被其他程序(此如:编译器等)读取。 Annotation的格式: 注解是以"@注释名"在代码中存在的,还可以添加一些参数值,例如:@SuppressWarnings(value=“unchecked”). Annotation在哪里使用? 可以附加在package , class , metho
2021-11-28 23:29:00
279
原创 【java基础】捕获和抛出异常
异常处理机制 抛出异常 捕获异常 异常处理五个关键字 try,catch,finally,throw、throws IDEA快速生成try~finally 选中代码行,然后Ctrl + Alt+ T public class Test { public static void main(String[] args) { int a = 1; int b = 0; //try和catch是必须要的,finally可以不要 /
2021-11-28 13:00:19
164
原创 【java基础】异常机制
什么是异常 实际工作中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求、你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数据,数据可能是空的等。我们的程序再跑着,内存或硬盘可能满了。等等。 软件程序在运行过程中,非常可能遇到刚刚提到的这些异常问题,我们叫异常,英文是:Exception,意思是例外。这些,例外情况,或者叫异常,怎么让我们写的程序做出合理的处理。而不至于程序崩溃。 异常指程序运行中出现的不期而至的各种状况,如:文件找不到、网络连接失
2021-11-27 20:01:04
115
原创 【java基础】接口
接口 普通类:只有具体实现 抽象类:具体实现和规范(抽象方法)都有! 接口:只有规范!自己无法写方法~专业的约束! 约束和实现分离:面向接口编程 接口就是规范,定义的是一组规则,体现了现实世界中“如果你…则必须能…”的思想。如果你是天使,则必须能飞。如果你是汽车,则必须能跑。如果你好人,则必须干掉坏人;如果你是坏人,则必须欺负好人。 接口的本质是契约,就像我们人间的法律一样。 制定好后大家都遵守。 OO的精髓,是对对象的抽象,最能体现这一点的就是接口。 为什么我们讨论设计模式都只针对具备了抽象能力的语言(
2021-11-27 19:10:16
109
原创 【java基础】抽象类
抽象类 abstract修饰符可以用来修饰方法也可以修饰类,如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类。 抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。 抽象类,不能使用new关键字来创建对象,它是用来让子类继承的。 抽象方法,只有方法的声明,没有方法的实现,它是用来让子类实现的。 子类继承抽象类,那么就必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类。 抽象类中可以写普通的方法 抽象方法必须在抽象类中 不能new这个
2021-11-27 16:04:48
183
原创 【java基础】static关键字详解
static关键字 非静态方法可以调用静态方法,反之则不行。 public class Student { private static int age;//静态的变量 多线程 private double score;//非静态的变量 public void run(){ System.out.println("run"); go(); } public static void go(){ System.out.
2021-11-27 14:46:24
316
原创 【java基础】instanceof和类型转换
什么是instanceof instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。 public class Application { public static void main(String[] args) { //Object > String //Object > Person > Teacher //Object > Person
2021-11-27 13:05:19
421
原创 【java基础】多态
多态 即同一方法可以根据发送对象的不同而采用多种不同的行为方式。 一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多 多态存在的条件 有继承关系 子类重写父类方法 父类引用指向子类对象 注意:多态是方法的多态,属性没有多态性。 instanceof (类型转换)引用类型 多态注意事项 多态是方法的多态,属性没有多态 父类和子类,有联系 没有联系会导致转换类型异常! ClassCastExpection! 存在条件:继承关系,方法需要重写,父类引用指向子类对象 Father f1
2021-11-27 11:20:58
132
原创 【java基础】重写
重写 需要有继承关系 子类重写了父类的方法!,子类的方法和父类必须要一致,方法体不同 方法名必须相通 参数列表必须相同 修饰符:范围可以扩大,不能缩小 public > Protected > Default > private 抛出的异常:范围可以被缩小,但不能扩大 ClassNotFoundException --> Exception(大) 为什么要重写 父类的功能子类不一定需要,或者不一定满足! Application.java public class App
2021-11-27 10:13:08
223
原创 【java基础】继承
继承 继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。 extends的意思是”扩展"。子类是父类的扩展。 JAVA中类只有单继承,没有多继承! 继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。 继承关系的俩个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示。 子类和父类之间,从意义上讲应该具有"is a"的关系. object类 super 方法重写 Application.java public c
2021-11-27 01:30:44
138
原创 【java基础】封装
封装 该露的露,该藏的藏 我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。 封装(数据的隐藏) 通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。 记住这句话就够了:属性私有,get/set Application.java public class Application { public static void main(String[] args) {
2021-11-27 01:04:38
124
原创 【java基础】创建对象内存分析
Pet.java public class Pet { public String name; public int age; //无参构造 public void shout(){ System.out.println("叫了一声!"); } } Application.java public class Application { public static void main(String[] args) { Pet d
2021-11-27 00:25:03
118
原创 【java基础】类和对象的创建
类和对象的关系 类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物. 动物、植物、手机、电脑… . Person类、 Pet类、Car类等, 这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为 对象是抽象概念的具体实例 张三就是人的一个具体实例,张三家里的旺财就是狗的一个具体实例。 能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念. 创建与初始化对象 使用new关键字创建对象 使用new关键字创建的时候,除了分配内存空间之外,还会
2021-11-26 20:55:54
192
原创 【java基础】调用方法
调用静态方法 调用学生类中的静态方法 public class Student { //方法 public static void say(){ System.out.println("学生说话了!"); } } public class Demo2 { public static void main(String[] args) { //静态方法 static Student.say(); } } 非静态方法 pu
2021-11-26 20:54:30
247
原创 【java基础】面向对象
面向过程 & 面向对象 面向过程思想 步骤清晰简单,第一步做什么,第二步做什么… 面对过程适合处理一些较为简单的问题 面向对象思想 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。 面向对象适合处理复杂的问题,适合处理需要多人协作的问题! 对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。 什么是面
2021-11-26 15:53:46
140
原创 【java基础】数组
数组的定义 数组是相同类型数据的有序集合。 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。 数组声明创建 首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法: dataType[] arrayReVar; // 首选的方法 或 dataType arrayReVar[]; // 效果相同,但不是首选方法 Java语言使用new操作符来创建数组,语法如下: dataType[] ar
2021-11-26 00:37:17
126
原创 【java基础】递归详解
递归 A方法调用B方法,我们很容易理解! 递归就是: A方法调用A方法!就是自己调用自己 利用递归可以用简单的程序来解决-些复杂的问题。 它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。 递归结构包括两个部分: 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。 递归体:什么时候需要调用自身方法。 ...
2021-11-25 13:45:52
275
原创 【java基础】java方法详解
什么是方法? System.out.println(),那么它是什么呢? //调用系统类里的标准输出对象out中的叫做println()的方法 System.out.println() //Syetem是一个系统的类 //out是一个在System下的输出对象 //println()这就是一个方法 Java方法是语句的集合,它们在一 起执行一个功能。 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建, 在其他地方被引用 //加法 public int static
2021-11-25 00:10:03
107
原创 【java基础】break、continue、goto
break break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用) continue continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。 goto goto关键字很早就在程序设计语言中出现。尽管goto仍是Java的一个保留字,但并未在语言中得到正式使用; Java没有goto。然而,在break和continue这
2021-11-24 23:41:25
314
原创 【java基础】java结构
顺序结构 选择结构 if单选择结构 if双选择结构 if多选择结构 嵌套的if结构 switch多选择结构 反编译: java----class(字节码文件)----反编译(IDEA) 循环结构 while循环 //死循环(应该避免) while (true){ //等待客户端连接 //定时检查 } do…while循环 for循环 ==========while循环================== int a = 1;//初始化条件
2021-11-24 15:53:18
101
原创 【java基础】用户交互Scanner
Scanner对象 之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入。java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入。 基本语法:Scanner s = new Scanner(System.in); 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。 publ
2021-11-24 12:47:26
123
原创 【java基础】JavaDos生成文档
JavaDoc javadoc命令是用来生成自己API文档的 参数信息: @author 作者号 @version 版本号 @since 指明需要最早使用的jdk版本 @param参数名 @return返回值情况 @throws异常抛出情况
2021-11-24 11:19:18
242
原创 【java基础】包机制
包机制 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。 包语句的语法格式为: package pkg1[. pkg2[. pkg3...]]; 一般利用公司域名导致作为包名; 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用“import”语句可完成此功能 import package1[.package2...].(classname|*); //*为通配符,导入这个包下的所有的类 ...
2021-11-24 00:21:18
107
转载 【java基础】运算符优先级
运算符优先级 该表中优先级按照从高到低的顺序书写,也就是优先级为1的优先级最高,优先级14的优先级最低。 结合性是指运算符结合的顺序,通常都是从左到右。从右向左的运算符最典型的就是负号,例如3±4,则意义为3加-4,符号首先和运算符右侧的内容结合。 instanceof作用是判断对象是否为某个类或接口类型,后续有详细介绍。 注意区分正负号和加减号,以及按位与和逻辑与的区别 其实在实际的开发中,不需要去记忆运算符的优先级别,也不要刻意的使用运算符的优先级别,对于不清楚优先级的地方使用小括号去进行替代,示例
2021-11-24 00:04:35
217
原创 【java基础】运算符
java语言支持如下运算符: 算数运算符:+,-,*,%,++,- - 赋值运算符:= 关系运算符:>,<,>=,<=,==,!=instanceof 逻辑运算符:&&,||,! 位运算符:&,|,^,~,>>,<<,>>>(了解!!!) 条件运算符:?: 拓展赋值运算符:+=,-=,*=,/= 自动类型转换: 自增自减运算符 //自增,自减 一元运算符 int a = 3; int b = a++; //执行
2021-11-24 00:01:39
312
原创 【java基础】变量和常量
变量 java是一种强类型语言,每个变量都必须声明其类型。 java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域 变量的命名规范 所有变量、方法、类名:见名知意 类成员变量:首字母小写和驼峰原则: monthSalary 局部变量:首字母小写和驼峰原则 常量:大写字母和下划线: MAX VALUE 类名:首字母大写和驼峰原则: Man, GoodMan 方法名:首字母小写和驼峰原则: run(), runRun() type varName [=value] [{,varName
2021-11-23 19:58:12
95
原创 【java基础】类型转换
为什么要使用类型转换? 答:由于java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。 内存溢出 int i = 128; byte b = (byte)i; /输出的为-128 这是因为byte的最大值为127,导致了内存溢出 数据类型的高低 强制类型转换 (类型)变量名 高–低 自动转换 低–高 注意点 不能对布尔值进行转换 不能把对象类型转换为不想干的类型 在把高容量转换到低容量的时候,强制转换 转换的时候可能存在内存溢出,或者精度问题! System.out.println(
2021-11-23 18:57:12
244
原创 【java基础】什么是数据类型
数据类型 强类型语言 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用(安全性增强但速度变慢了) 弱类型语言 java的数据类型分两大类 基本类型(primitive type) 数值类型: 整数类型: byte占1个字节范围:-128-127 short占2个字节范围:-32768-32767 int占4个字节范围:-2147483648-2147483647 long占8个字节范围:-9223372036
2021-11-23 01:31:37
273
原创 【java基础】注释符、标识符以及关键字
1.注释符 注释符:代码量多的时候写注释会有助于我们快速看懂代码,书写注释是一个非常好的习惯。 单行注释 //单行注释 多行注释 /* 多行注释 多行注释 多行注释 */ JavaDoc:文档注释 /** *@Author 小李 */ 2.标识符和关键字 java起名字不能用关键字起名 java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。 所有的标识符都应该以字母(A-Z或者a-z),美元符($),或者下划线(_)开始 首字符之后可以是字母(A-Z或者a-z),美元符($),或者
2021-11-23 00:51:12
330
原创 【java基础】jdk目录下的各个子目录的用处
bin目录 该目录下存放一些可执行程序,例如javac编译器。还有一些java运行工具。 include目录 由于jdk是由C和C++进行编写的,在启动时需要去引入一些C语言的头文件。 jre目录 就是java运行时环境,只需要它我们就可以运行java了。 lib目录 存放了一些java的类库文件。 src压缩包 里面存放了很多的类。 ...
2021-11-22 21:01:44
953
原创 【java基础】java安装开发环境
Java的安装开发环境 1.Java SE Development Kit的下载与安装 java更新很快,但只是多了一些新特性,所以我们下载安装最经典的JDK8 JDK8下载链接,直接点击即可跳转到下载页面! 虽然大部分计算机是64位的系统,但为了以防万一,我们需要查看一下我们的计算机的操作系统位数。 首先,我们找到我的电脑然后右键选择属性,如下图所示: 找到我们计算机对应操作系统位数的JDK安装包点击下载 下载后之后,点击安装包,建议按我的路径进行设置简单,记住路径,等会会用到。 2.配置java
2021-11-22 20:38:45
637
原创 【java基础】Java如何卸载
Java如何卸载 首先右键我的电脑,属性选择高级系统设置,找到环境变量,打开之后在系统变量里找到HAVA_HOME [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H3UxzwKX-1637579541626)(C:\Users\阿伟\AppData\Roaming\Typora\typora-user-images\image-20211122185919116.png)] 点击JAVA_HOME复制变量值中的路径 在资源管理器中找到这个目录,直接删除 再次打开环境变量
2021-11-22 19:51:02
3625
原创 【Java基础】JDK、JRE、 JVM的含义以及关系
JDK、JRE、 JVM的含义以及关系 JDK:Java Development Kit Java开发者工具 JRE:Java Runtime Environment Java运行时环境 JVM:Java Virtual Machine Java虚拟机
2021-11-22 18:29:31
247
原创 基础Dos命令
基本的Dos命令 打开CMD的方式 点击开始,找到Windows系统文件夹下的命令提示符 Win键+R键,然后再输入cmd打开控制台(推荐使用) 在任意文件夹下,按住shift键+鼠标右键,在此处打开命令行窗口 资源管理器的地址栏前面加上cmd,cmd和路径要有一个空格 管理员方式运行:点击开始,找到Windows系统文件夹下的命令提示符,右键更多找到选择以管理员方式运行 Dos命令 盘符切换 盘符+: 例如切换到D盘,则输入D: 查看当前目录下的所有文件 dir 切换目录 cd /d 盘符:\
2021-11-22 17:05:25
199
原创 Markdown学习
Markdown学习 标题 #+空格,n个#号代表n级标题,最多支持6级标题 字体 在文本的开头和结尾都加上*就可以变为斜体 在文本的开头和结尾都加上**就可以对文本加粗 在文本的开头和结尾都加上***就可以变为斜体加粗 在文本的开头和结尾都加上–就可以变为删除线效果 引用 通过>就可以进行引用 分割线 通过—或者***来代表分割线 图片 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b76XbTel-1637514613531)(输入图片路径,可以是本地链接也可以是网
2021-11-22 01:10:48
200
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅