Java
文章平均质量分 69
我是东山阿
这个作者很懒,什么都没留下…
展开
-
【JVM类加载及字节码技术】类加载阶段——类加载器、双亲委派模式
文章目录类加载器1、启动类加载器2、拓展类加载器3、应用程序类加载器4、双亲委派模式双亲委派的具体过程如下:5、自定义类加载器5.1、使用场景5.2、步骤类加载器Java虚拟机设计团队有意把类加载阶段中的“通过一个类的全限定名来获取描述该类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需的类。实现这个动作的代码被称为“类加载器”(ClassLoader)。对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性,每一个类加原创 2022-03-12 20:16:11 · 699 阅读 · 0 评论 -
【JVM类加载及字节码技术】类加载阶段——加载、链接(一)
JVM的类加载——加载、链接【一】原创 2022-03-03 11:19:52 · 631 阅读 · 0 评论 -
【JVM类加载及字节码技术】类加载阶段——初始化(二)
类加载阶段——初始化【二】原创 2022-03-03 11:18:43 · 285 阅读 · 0 评论 -
面向对象编程-高级(三)-抽象类、final
一、final 关键字1.1 基本介绍 //如果我们要求 hi 不能被子类重写 //可以使用 final 修饰 hi 方法 public final void hi() {}//当不希望类的的某个属性的值被修改,可以用 final 修饰public final double TAX_RATE = 0.08;//常量//当不希望某个局部变量被修改,可以使用 final 修饰//这时,NUM 也称为 局部常量 final double NUM = 0.01;1.2 final 使用原创 2021-09-23 22:58:13 · 73 阅读 · 0 评论 -
面向对象编程-高级(二)-代码块
一、代码块1.1 基本介绍1.2 基本语法1.3 代码块的好处和案例演示下面的三个构造器都有相同的语句这样代码看起来比较冗余这时我们可以把相同的语句,放入到一个代码块中,即可当我们不管调用哪个构造器, 创建对象,都会先调用代码块的内容代码块调用的顺序优先于构造器…{ System.out.println("需要执行的冗余代码1..."); System.out.println("需要执行的冗余代码2..."); System.out.println("需要执行的冗余代码原创 2021-09-23 17:03:31 · 66 阅读 · 0 评论 -
面向对象编程-高级(一)-类变量和类方法
一、 类变量和类方法1.1 类变量/静态属性1.1.1 类变量-提出问题提出问题的主要目的就是让大家思考解决之道,从而引出我要讲的知识点.说:有一群小孩在玩堆雪人,不时有新的小孩加入,请问如何知道现在共有多少人在玩?,编写程序解决。1.1.2 传统的方法来解决1.1.3 类变量快速入门思考: 如果,设计一个 int count 表示总人数,我们在创建一个小孩时,就把 count 加 1,并且 count 是所有对象共享的 就 ok 了!我们使用类变量来解决改进。//定义一个变量 count原创 2021-09-23 16:13:14 · 122 阅读 · 0 评论 -
面向对象编程-中级(四)-Object 类详解
一、Object 类详解1.1 equals 方法’==’ 和 ‘equals’ 的对比1.1.1 String重写equals方法源码/* //带大家看看 Jdk 的源码 String 类的 equals 方法 //把 Object 的 equals 方法重写了,变成了比较两个字符串值是否相同 */public boolean equals(Object anObject) { if (this == anObject) {//如果是同一个对象 return true;//返回 t原创 2021-09-23 15:11:23 · 141 阅读 · 0 评论 -
面向对象编程-中级(三)-方法重写、覆盖、多态、动态绑定机制
一、方法重写/覆盖(override)1.1 基本介绍1.2 快速入门public class Animal { public void cry() { System.out.println("动物叫唤.."); }}public class Dog extends Animal{ //1. 因为 Dog 是 Animal 子类 //2. Dog 的 cry 方法和 Animal 的 cry 定义形式一样(名称、返回类型、参数) //3. 这时我们就说 Dog 的 cr原创 2021-09-23 09:51:17 · 144 阅读 · 0 评论 -
面向对象编程-中级(二)-封装、继承、super
一、面向对象编程三大特征1.1 基本介绍面向对象编程有三大特征:封装、继承和多态。二、面向对象编程-封装2.1 封装介绍2.2 封装的理解和好处2.3封装的实现步骤 (三步)2.4 快速入门案例class Person { public String name; //名字公开 private int age; //age 私有化 private double salary; //.. //构造器 alt+insert public Person() { }原创 2021-09-23 08:42:51 · 102 阅读 · 0 评论 -
面向对象编程-中级(一)-包、访问修饰符
一、包1.1 看一个应用场景1.2 包的三大作用1.3 包基本语法1.4 包的本质分析(原理)1.6 包的命名1.7 常用的包一个包下,包含很多的类,java 中常用的包有:java.lang.* //lang 包是基本包,默认引入,不需要再引入.java.util.* //util 包,系统提供的工具包, 工具类,例如 Scannerjava.net.* //网络包,网络开发java.awt.* //是做 java 的界面开发,GUI1.原创 2021-09-23 07:22:00 · 78 阅读 · 0 评论 -
面向对象编程-基础(四)-构造方法/构造器
一、构造方法/构造器1.1 构造器介绍我们来看一个需求:前面我们在创建人类的对象时,是先把一个对象创建好后,再给他的年龄和姓名属性赋值,如果现在我要求,在创建人类的对象时,就直接指定这个对象的年龄和姓名,该怎么做? 这时就可以使用构造器。1.2 基本语法[修饰符] 方法名(形参列表){ 方法体;}构造器的修饰符可以默认,也可以是public,protected,private构造器没有返回值方法名和类名字必须一样参数列表和成员方法一样的规则构造器的调用, 由系统完成1.2 基原创 2021-09-22 21:38:53 · 211 阅读 · 0 评论 -
面向对象编程-基础(三)
一、方法递归调用(非常非常重要,比较难)1.1 基本介绍简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂问题,同时可以让代码变得简洁.1.2 递归能解决什么问题?1.3 递归举例打印问题阶乘问题1.3.1 打印问题public class Recursion01 { public static void main(String[] args) { //打印问题 T t1 = new T(); t1.test(4);//输出什么? n=原创 2021-09-22 18:44:24 · 94 阅读 · 0 评论 -
面向对象编程-基础(二)-传参机制
1、成员方法1.1 基本介绍在某些情况下,我们要需要定义成员方法(简称方法)。比如人类:除了有一些属性外( 年龄,姓名…),我们人类还有一 些行为比如:可以说话、跑步…,通过学习,还可以做算术题。这时就要用成员方法才能完成。现在要求对 Person 类完善。1.2 方法的调用机制原理:(重要!-示意图!!!)1.3 成员方法的好处提高代码的复用性可以将实现的细节封装起来,然后供其他用户来调用即可1.4 成员方法的定义访问修饰符 返回数据类型 方法名(形参列表..) { //方法体原创 2021-09-22 17:27:34 · 146 阅读 · 0 评论 -
面向对象编程-基础(一)-类与对象
1、类与对象1.1 看一个养猫猫问题张老太养了两只猫猫:一只名字叫小白,今年 3 岁,白色。还有一只叫小花,今年 100 岁,花色。请编写一个程序,当用户输入小猫的名字时,就显示该猫的名字,年龄,颜色。如果用户输入的小猫名错误,则显示 张老太没有这只猫猫。1.2使用之前技术解决单独的定义变量解决使用数组解决1.3 现有技术解决的缺点分析不利于数据的管理效率低===》 引出我们的新知识点 类与对象 哲学, 道家思想java 设计者 引入 类与对象(OOP) ,根本原因就是现有的技术原创 2021-09-22 14:45:37 · 361 阅读 · 0 评论 -
数组、排序和查找(二)
1、排序的介绍排序是将多个数据,依指定的顺序进行排列的过程。排序的分类:1.1 内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序。包括(交换式排序法、选择式排序法和插入式排序法);1.2 外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)。2、冒泡排序法冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐原创 2021-09-22 00:01:47 · 107 阅读 · 0 评论 -
数组、排序和查找(一)
1、为什么需要数组一个养鸡场有 6 只鸡,它们的体重分别是3kg,5kg,1kg,3.4kg,2kg,50kg 。请问这六只鸡的总体重是多少?平均体重是多少?思路:定义 6 个变量 , 加起来 总体重, 求出平均体重.引出 -> 数组1.1 数组介绍数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型。1.2 数组的使用public class Array02 { //编写一个 main 方法 public static void main(String[]原创 2021-09-22 00:01:20 · 198 阅读 · 0 评论 -
程序控制结构(三)
1、跳转控制语句-break1.1基本介绍:break 语句用于终止某个语句块的执行,一般使用在 switch 或者循环[for , while , do-while]中1.2 基本语法:{ …break;…}1.3 以 while 使用 break 为例画出示意图1.4 快速入门1.5 注意事项和细节说明:2、跳转控制语句-continue2.1 基本介绍:continue 语句用于结束本次循环,继续执行下一次循环。continue 语句出现在多层嵌套的循环语句体原创 2021-09-22 00:01:00 · 57 阅读 · 0 评论 -
程序控制结构(二)
经典的打印金字塔要求:使用 for 循环完成下面的案例。请编写一个程序,可以接收一个整数,表示层数(totalLevel),打印出金字塔。 [化繁为简, 先死后活]public class Stars { //编写一个 main 方法 public static void main(String[] args) { /* * * * * * ************ 思路分析 化繁为简 1. 先打印一个矩形 ***** *****原创 2021-09-21 15:39:28 · 375 阅读 · 0 评论 -
程序控制结构(一)
1、程序流程控制介绍在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句。顺序控制分支控制循环控制2、顺序控制3、分支控制 if-else3.1分支控制 if-else 介绍让程序有选择的的执行,分支控制有三种:单分支 if双分支 if-else多分支 if-else if -…-else3.1.1 单分支public class If01 {//编写一个 main 方法 public static void main(Stri原创 2021-09-21 15:23:57 · 340 阅读 · 0 评论 -
运算符(二)
9、关键字定义:被 Java 语言赋予了特殊含义,用做专门用途的字符串(单词)特点:关键字中所有字母都为小写10、保留字10.1 介绍Java 保留字:现有 Java 版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留 字 byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、const。11、键盘输入语句11.1 介绍在编程中,需要接收用户输入的数据,就可以使用键盘输原创 2021-09-21 14:21:11 · 65 阅读 · 0 评论 -
运算符(一)
运算符1、运算符介绍运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。算术运算符赋值运算符关系运算符 [比较运算符]逻辑运算符位运算符 [需要二进制基础]三元运算符2、算术运算符2.1 介绍算术运算符是对数值类型的变量进行运算的,在 Java 程序中使用的非常多。2.2 算术运算符一览2.4 细节说明2.5 思考题3、关系运算符(比较运算符3.1 介绍关系运算符的结果都是boolean型,也就是要么是true,要么是false关系表达式经常用在if原创 2021-09-21 11:03:55 · 181 阅读 · 0 评论 -
变量(三)
1、基本数据类型转换1、自动类型转换2、自动类型转换注意和细节//自动类型转换细节public class AutoConvertDetail { //编写一个 main 方法 public static void main(String[] args) { //细节 1: 有多种类型的数据混合运算时, //系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算 int n1 = 10; //ok //float d1 = n1 + 1.1;//错误 n1 + 1.1原创 2021-09-21 10:13:42 · 85 阅读 · 0 评论 -
变量(二)
7、整数类型1、基本介绍Java的证书类型就是用于存放整数值的,比如12,30,3242等2、整数的类型3、整数使用细节该图展示了byte和short怎么存储数据。public class IntDetail { //编写一个 main 方法 public static void main(String[] args) { //Java 的整型常量(具体值)默认为 int 型,声明 long 型常量须后加‘l’或‘L’ int n1 = 1; //4 个字节 //int n原创 2021-09-21 09:49:17 · 78 阅读 · 0 评论 -
变量(一)
变量1、变量的概念变量相当于内存中一个数据存储空间的表示,你可以把变量看作一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量值。2 、变量的基本使用步骤//声明变量int a;//赋值a = 60;//将60赋值个哦a//通常我们可以简写为int a = 60;3、变量的快速入门public class Var02 {//编写一个 main 方法 public static void main(String[] args) { //记录人的信息 int原创 2021-09-21 09:11:53 · 146 阅读 · 0 评论 -
Java概述(四)
Java 转义字符1、Java 常用的转义字符在控制台,输入 tab 键,可以实现命令补全\t :一个制表位,实现对齐的功能\n :换行符\ :一个" :一个"’ :一个’\r :一个回车2 说明 应用实例//演示转义字符的使用 public class ChangeChar { //编写一个 main 方法 public static void main(String[] args) { //\t :一个制表位,实现对齐的功能 System.out.println("北京\原创 2021-09-21 00:55:00 · 127 阅读 · 0 评论 -
Java概述(三)
11、Java快速入门1、需求说明要求开发一个Hello.java程序,可以输出"hello,world"2、开发步骤将 Java 代码编写到扩展名为 Hello.java 的文件中。通过 javac 命令对该 java文件进行编译,生成 .class 文件。通过 java 命令对生成的 class 文件进行运行。3、运行原理示意图3、Java 开发注意事项和细节说明本博客来源于整理韩顺平老师讲解的java笔记。...原创 2021-09-21 00:35:02 · 53 阅读 · 0 评论 -
Java概述(一)
Java概述程序:计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合1、 什么是程序举例说明:2、 Java 诞生小故事3、 Java 技术体系平台4、 Java 重要特点Java 语言是面向对象的(oop)Java 语言是健壮的。Java 的强类型机制、异常处理、垃圾的自动收集等是 Java 程序健壮性的重要保证Java 语言是跨平台性的。[即: 一个编译好的.class 文件可以在多个系统下运行,这种特性称为跨平台]Java 语言是解释型的[原创 2021-09-20 23:48:26 · 80 阅读 · 0 评论 -
Java概述(二)
Java概述(二)5.1Java 语言的特点:跨平台性5.2Java 核心机制-Java 虚拟机 [JVM java virtual machine]基本介绍JVM 是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器,包含在 JDK 中.对于不同的平台,有不同的虚拟机。Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行” 。示意图6、 什么是 JDK,JRE6.1 JDK 基本介绍JDK 的全称(Java Develo原创 2021-09-21 00:16:44 · 71 阅读 · 0 评论