Java基础学习
文章平均质量分 62
kong清空
学习ing
展开
-
注解与反射:类加载内存分析
目录Java内存分析了解:类的加载过程类的加载与ClassLoader的理解代码实现Java内存分析了解:类的加载过程类的加载与ClassLoader的理解加载:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,然后生成一个代表这类的java.lang.Class对象链接:将Java类的二进制代码合并到JVM的运行状态之中的过程验证:确保加载的类信息符合JVM规范,没有安全方面的问题准备:正式为类变量(static..原创 2022-02-25 10:48:56 · 182 阅读 · 0 评论 -
注解与反射:所有类型的Class对象
哪些类型可以有Class对象class:外部类,成员(成员内部类,静态内部类),局部内部类,匿名内部类interface:接口[ ]:数组enum: 枚举annotation:注解@interfaceprimitive type:基本数据类型voidpackage com.reflection;import java.lang.annotation.ElementType;//所有类型的Class对象public class Test04 { public原创 2022-02-25 09:49:20 · 241 阅读 · 0 评论 -
注解与反射:得到Class类的几种方式
Class类对象照镜子后可以得到的信息:某个类的属性,方法和构造器,某个类到底实现了哪些接口。对于每个类而言,JRE都为其保留一个不变的Class类型的对象。一个Class对象包含了特定某个结构(class/interface/enum/annotation/primitive type/void)的有关信息。Class本身也是一个类Class对象只能由系统建立对象一个加载的类在JVM中只会有一个Class实例一个Class对象对应的是一个加载到JVM中的一个.class文件每个类的原创 2022-02-24 17:01:28 · 813 阅读 · 0 评论 -
Java基础: 反射
静态语言与动态语言动态语言:是一类在运行时可以改变其结构的语言:例如新的函数,对象,甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构。主要动态语言:Object-C,C#,JavaScript,PHP,Python等下面是一段JavaScript代码,它在程序运行时就可以改变x的值静态语言:与动态语言相对应的,运行时结构不可变的语言就是静态语言。如Java,C,C++Java不是动态语言,但Java可以称之为“原创 2022-02-24 09:31:17 · 122 阅读 · 0 评论 -
Java基础:注解
注解概述1.什么是注解?定义︰注解(Annotation ) ,也叫元数据。一种代码级别的说明。它是5.0版本引入的新技术,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。...原创 2022-02-22 13:35:52 · 235 阅读 · 0 评论 -
Java基础: 捕获与抛出异常
目录关键字:try、catch、finally、throw、throws不捕获异常(编译不报错,运行报错)捕获异常catch(想要捕获的异常类型)可以使用多个catch,且要捕获多个异常时,捕获的异常必须从小到大。捕获异常快捷键:Ctrl+Alt+TThrow:主动抛出异常,一般在**方法中使用 **Throws:假设这方法中,处理报不了这个异常。方法上抛出异常异常处理机制关键字:try、catch、finally、throw...原创 2022-02-17 14:09:25 · 1633 阅读 · 0 评论 -
Java基础:异常 Error与Exception
目录1.什么是异常?2.简单分类3.异常体系结构Error4.一些常见的异常与错误栈溢出错误1.什么是异常?实际工作中,遇到的情况不可能是非常完美的。比如,你写的某个模块,用户输入不一定符合你的要求,你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数据,数据可能是空的等。软件程序在运行过程中,非常可能遇到刚刚提到的这些异常问题,我们叫异常,英文是:Exception,意思是例外。这些,例外情况,或者叫异常,怎么让我们写的程序做出合理的处理。而.原创 2022-02-12 10:56:02 · 482 阅读 · 0 评论 -
Java基础:N种内部类 (拓展)
目录定义成员内部类静态内部类特别的内部类局部内部类匿名内部类(没有名字的类)定义内部类就是在一个类的内部再定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了。成员内部类成员内部类是最普通的一种内部类,成员内部类可以访问外部类所有的属性和方法。但是外部类要访问成员内部类的属性和方法,必须要先实例化成员内部类。注意:成员内部类里面不能包含静态的属性和方法建立一个外部类Outer,其中有内部类Innerpub..原创 2022-02-11 15:51:16 · 276 阅读 · 0 评论 -
Java基础: 接口的定义与实现
普通类:只有具体实现抽象类:具体实现和规范(抽象方法)都有接口:只有规范!自己无法写方法~专业的约束!约束和实现分离:面向接口编程~接口的本质是契约,就像法律一样,制定好后都必须遵守。面向对象的精髓,是对对象的抽象,最能体现这一点的就是接口。声明类的关键字是class,声明接口的关键字是interface。接口里无法写方法的实现,需要实现类去实现建立UserService接口//interface 定义的关键字,接口都需要有实现类public interface User原创 2022-02-11 11:07:30 · 717 阅读 · 0 评论 -
Java基础: 抽象类
目录抽象类特点:思考:抽象类不能new对象,是否存在构造器?扩展:抽象类存在的意义:为了子类更好地实现抽象类建立名为Action的抽象类package com.demo1.demo11;//abstract 抽象类:类 extends 单继承 还是有局限性//(接口可以多继承)public abstract class Action { //约束~ 有人帮我们实现~ //abstract,抽象方法,只有方法名字,没有方法的实现! pu.原创 2022-02-10 16:50:14 · 175 阅读 · 0 评论 -
Java基础: static关键字详解
目录属性方法静态代码块,匿名代码块,构造器的执行顺序静态导入包final 的特性:如果有final,就不能被继承了属性public class Student { private static int age;//静态的变量 多线程 private double score;//非静态的变量 public static void main(String[] args) { Student s1 = new Student();原创 2022-02-08 10:27:36 · 324 阅读 · 0 评论 -
Java基础:instanceof和类型转换
instanceof (类型转换) 引用类型,判断一个对象是什么类型万能公式:System.out.println(X instanceof Y);能不能编译通过!取决于X和Y是否是父子关系,X和Y是否有关系,有关系但不是父子关系,编译通过,但是会输出FalseApplication测试类package com.demo1.demo09;import com.demo1.demo09.demo9.Person;import com.demo1.demo09.demo9.Student原创 2022-02-08 09:17:25 · 278 阅读 · 0 评论 -
Java基础: 多态
目录前言实例:多态注意事项:前言动态编译:类型:可扩展即同一方法可以根据发送对象的不同而采用多种不同的行为方式一个对象的实际类型是确定的,但可以指向对象的引用类型有很多(一般指的都是父类或有关系的类)实例:父类Personpublic class Person { public void run(){ System.out.println("run"); }}子类Student//在子类中重写父类方法public cl原创 2022-01-25 10:00:00 · 144 阅读 · 0 评论 -
Java基础:方法重写
1.静态(static)父类B//重写都是方法的重写,和属性无关public class B { public static void test(){ System.out.println("B=>test()"); }}子类Apublic class A extends B{ public static void test(){ System.out.println("A=>test()"); }}启原创 2022-01-24 08:46:46 · 273 阅读 · 0 评论 -
Java基础: Super () this()
目录1.子类调用父类属性2.子类调用父类方法3.构造器4.父类定义有参构造,但未显示定义无参构造会导致程序报错(封装错误)总结:1.子类调用父类属性父类Personpublic class Person { protected String name = "父亲";}子类Studentpublic class Student extends Person { private String name = "儿子"; publ.原创 2022-01-21 09:11:28 · 581 阅读 · 0 评论 -
Java基础:继承
继承的本质是对某一批类的抽象,从而实现对世界更好地建模。extends的意思是“扩展”。子类是父类的扩展。继承是类和类之间的一种关系。除此之外类和类之间的关系还有依赖、组合、聚合等等。继承是两个类,一个子类(派生类),父类(基类),子类继承父类,使用关键字extends来表示。子类和父类之间,从意义上讲应该具有"is a"的关系。extends的意思是"扩展"。子类是父类的扩展。Java中类只有单继承,没有多继承。理解:一个儿子只有一个爸爸,但是一个爸爸可以有多个儿子。建立一个父类P.原创 2022-01-19 14:30:06 · 1808 阅读 · 0 评论 -
Java基础: 封装
目录public与private(公有与私有)get与set方法封装的意义:额外知识点:我们程序设计要追求“高内聚低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。封装(数据的隐藏)通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。属性私有(private),使用get,set方法public与private(公有与私有)(Application类中)(Student类..原创 2022-01-15 15:58:18 · 126 阅读 · 0 评论 -
Java基础:创建内存对象分析(图解)
1.加载Application启动类。这个类中有一个main()方法。同时类中存在一个常量池,专门存放一些常量,例如现在存在一个常量:旺财。 // age中的3不是常量,是int类型的数字,也在该类中2.执行main()方法。main()方法会存在于栈里,目前位于最底层。3.new创建对象,会加载Pet类,生成具体的对象dog。dog(引用变量名)存在于栈中,只是一个变量名。真正的对象存在于堆中,占用一个内存地址,假定为0x0001(这个创建的对象是调用的无参构造的方法创建的,所以它的属性都...原创 2022-01-14 16:18:19 · 352 阅读 · 1 评论 -
Java基础: 构造器详解
目录构造器(constructor):无参构造和有参构造构造器作用:生成构造器快捷键:Alt + Insert项目构造器(constructor):定义完类后创建对象时已经用到了构造器:Person person = new Person();这里的Person()就是一个构造器。构造器的特点:1.和类名相同 2.没有返回值构造器是类的成员之一,但是为什么前面定义类的时候并没有写过构造器呢?因为如果在类中没有显式地构造构造器的话,系统会默认提供一个空参的构造...原创 2022-01-11 15:08:22 · 1464 阅读 · 0 评论 -
Java基础:类与对象 面向对象(OOP)
什么是面向对象?面向对象的本质是:以类的方式组织代码,以对象的组织(封装)数据抽象三大特性: 封装 继承 多态从认知来看,先有对象后有类,对象是具体的事务,类是抽象的,是对对象的抽象。从代码运行角度来看,先有类后有对象,类是对象的模板。...原创 2022-01-11 13:46:18 · 161 阅读 · 0 评论 -
Java基础:运算符
算术运算符 一元运算符 ++,-- 二元运算符 +,-,*,/,% 赋值运算符 = 扩展运算符 +=,-=,*=,/= 关系运算符 >,<,>=,<=,==,!=,instanceof 逻辑运算符 &&,||,!,^ 位运算符 &,|,^,~,>>,<<,>>> 条件运算符 ? : 字符串连接符 + 1、一元运算符..原创 2021-07-30 17:56:27 · 401 阅读 · 0 评论 -
狂神说Java: 数组 笔记
一.数组概述数组是相同类型数据的有序集合数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们二.数组声明创建1.数组声明首先必须声明数组变量,才能在程序中使用数组,下面是声明数组变量的语法dataType[] arrayRefVar;//首选的方法或dataType arrayRefVar[];//效果相同,但不是首选//数据类型 数组名 举例:int array1[];Java语原创 2021-08-14 18:07:48 · 191 阅读 · 0 评论 -
Java流程控制
一.顺序结构Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行顺序结构是最简单的算法结构它是任何一个算法都离不开的算法结构二.选择结构1.if单选择结构判断一个东西是否可行,然后再去执行,这样一个过程在程序中用if语句来表示语法: if(布尔表达式){ //如果布尔表达式为true将执行的语句 }2.if双选择结构-----if - else结构语法:if(布尔表达式){ //如果布尔表达式的值为true.原创 2021-08-06 18:51:02 · 66 阅读 · 0 评论 -
JAVA基础 01
一、注释注释平时写代码,代码量多会用到注释,注释不会被执行,要养成书写注释的习惯Java注释有三种单行注释多行注释文档注释public class demo1 { public static void main(String[] args) { //单行注释 // //输出一个helloworld! System.out.println("hello world!"); //12231原创 2021-07-28 18:45:01 · 116 阅读 · 0 评论 -
For循环练习题
1.计算0-100之间对的奇数和与偶数和package com.tfs.struct;public class ForDemo02 { public static void main(String[] args) { //输出0-100中奇数和与偶数和 int oddSum = 0; int evenSum = 0; for (int i = 0; i <=100; i++) { if (i%2原创 2021-08-06 19:03:25 · 276 阅读 · 0 评论 -
类型转换 溢出问题
public class demo4 { public static void main(String[] args) { int i = 128; byte b = (byte)i;//内存溢出 //byte范围为-128到127 //强制转换 (类型)变量名 高--低 //自动转换 低--高 System.out.println(i);//128 System.out.pri.原创 2021-07-29 18:02:35 · 224 阅读 · 0 评论 -
数据类型扩展及面试题
//进制转换 十进制 八进制0 十六进制0x int i1 = 10; int i2 = 010; int i3 = 0x3f; System.out.println(i1); System.out.println(i2); System.out.println(i3);输出结果:10 8 63//浮点数扩展 //float 有限 离散 舍入误差 大...原创 2021-07-29 17:10:45 · 72 阅读 · 0 评论 -
用户交互Scanner对象
Java提供这样一个工具类,可以获取用户的输入。java.util.Scanner 我们可以通过Scanner类来获取用户的输入基本语法: Scanner s = new Scanner(System.in);通过Scanner类的next()与nextLine()方法获取用户输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()方法来判断是否还有输入的数据next( )方法:1.一定要读取到有效字符后才可以结束输入2.对输入有效字..原创 2021-08-01 17:41:25 · 60 阅读 · 0 评论 -
变量 常量 作用域
变量是可以变化的量Java是一种强类型语言,每个变量都必须声明其类型java变量是程序中最基础的存储单元,其要素包括变量名,变量类和作用域type varName [=value] [{,varName[=value]}];//数据类型 变量名=值 可以使用逗号隔开来声明多个同类型变量注意事项:每个变量都有类型,类型可以是基本类型,也可以是引用类型变量名必须是合法的标识符变量声明是一条完整的语句,因此每一个申明都必须以分号结束变量作用域:p...原创 2021-07-30 01:02:49 · 47 阅读 · 0 评论 -
Java方法
目录1.何为方法2.方法的定义及调用方法的定义:方法的调用:3.方法重载4.命令行传参5.可变参数6.递归1.何为方法System.out.println(); 调用系统类里的标准输出对象out中的println方法Java方法是语句的集合,它们在一起执行一个功能····方法是解决一类问题步骤的有序组合····方法包含于类或对象中····方法在程序中被创建,在其他地方被引用设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集.原创 2021-08-09 14:26:59 · 66 阅读 · 0 评论