关于JAVA的小小的笔记

b站上JAVA好厉害的网课呢
JDK、JVM、JRE的区别

这篇文章参考了一些视频以及菜鸟上的教程对java的一些基础知识进行总结。
第一部分先总结了java相关的基础语法、关键字、性质(封装、继承、多态)
后续会继续补充java的一些实现原理

Java运算符表格

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Java基本语法

  1. 大小写写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
  2. 类名:类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
  3. 方法名:所有的方法名首字母小写。如果方法名含有若干单词,则后面的每个单词首字母大写。
  4. 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
    javac -encoding UTF-8 HelloWorld.java java HelloWorld
  5. 主方法入口:所有的 Java 程序由 public static void main(String[] args) 方法开始执行。
    在这里插入图片描述

for, while 及 do…while、if、switch

&&与 || 或 ^(异或,异为1) !非

while

while( 布尔表达式 ) {
  //循环内容
}

do … while

do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次

do {
       //代码语句
}while(布尔表达式)

for

for(初始化; 布尔表达式; 更新) {
    //代码语句
}

if

if(布尔表达式){
   //如果布尔表达式的值为true
}else{
   //如果布尔表达式的值为false
}
if(布尔表达式 1){
   //如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
   //如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
   //如果布尔表达式 3的值为true执行代码
}else {
   //如果以上布尔表达式都不为true执行代码
}

switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。 switch case 语句语法格式如下:
在这里插入图片描述

switch(expression){
    case value :
       //语句
       break; //可选
    case value :
       //语句
       break; //可选
    //你可以有任意数量的case语句
    default : //可选(当所有case值都不匹配的时候,用default收尾)
       //语句
}

变量(局部变量、类变量、实例变量)

在这里插入图片描述
在这里插入图片描述

java继承 extend 、 implements(final关键字)

extend

在类的声明中,通过关键字extends来创建一个类的子类。extends 是继承某个类, 继承之后可以使用父类的方法,也可以重写父类的方法;
extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,JAVA中不支持多重继承,但是可以用接口 来实现,这样就要用到implements,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了
比如 class A extends B implements C,D,E

implements

一个类通过关键字implements声明自己使用一个或者多个接口。 implements 是实现多个接口, 接口的方法一般为空的, 必须重写才能使用

finnal修饰类

finnal关键字代表 最终、不可改变
在这里插入图片描述
用finnal关键字修饰一个类的时候,这个类不能有子类,更别提覆盖重写了
在这里插入图片描述

finnal修饰方法

无论是在类还是函数中,finnal abstract 这种写法都是完全不对自相矛盾的
finnal修饰的方法不能进行覆盖重写
在这里插入图片描述

finnal修饰变量

finnal修饰局部变量,一次赋值,终生不变
这里是引用
finnal修饰的局部变量地址不变,地址名字可以改变
例如 finnal int num1=10;num1 =20 错误
可以 方法.getname
在这里插入图片描述

finnal修饰局部变量(必须要手动赋值:直接赋值或者用构造方法赋值)

在这里插入图片描述

一个继承的例子(定义类和对象,实现收发红包的操作)

API就是一本程序员随手使用的字典,除了自己编写类,JDK给我们提供了很多的类供我们调用。需要哪个类或者类中的方法,只要查查JDK API的官方文件,看看具体类中的方法使用 然后调用就好了
在这里插入图片描述
在这里插入图片描述
定义群主的类(继承user中的静态变量和构造方法)
在这里插入图片描述

在群主子类中写发红包的方法
在这里插入图片描述
用user写普通成员的子类
在这里插入图片描述
生成群主和成员的对象,开始发钱啦

在这里插入图片描述

多态与重写重载

多态是同一个接口,使用不同的实例而执行不同操作,当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
多态存在的三个必要条件:继承、重写、父类引用指向子类对象:Parent p = new Child();
方法的重写
也就是子类能够重写父类的方法。当子类对象调用重写的方法时,调用的是子类的方法,而不是父类中被重写的方法。要想调用父类中被重写的方法,则必须使用关键字 super。
重载优点好处:只需要记住一个方法的名称就可以实现类似的功能
在这里插入图片描述

class Shape {
    void draw() {}
}
 
class Circle extends Shape {
    void draw() {
        System.out.println("Circle.draw()");
    }
}
 
class Square extends Shape {
    void draw() {
        System.out.println("Square.draw()");
    }
}
 
class Triangle extends Shape {
    void draw() {
        System.out.println("Triangle.draw()");
    }
}

在这里插入图片描述

在这里插入图片描述

多态的格式及使用(左父右子)

子类
在这里插入图片描述父类
在这里插入图片描述

对象

在这里插入图片描述

抽象类

抽象的概念

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。
由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。
父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。
在 Java 中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。 如果父类当中的方法不确定{}方法进行,那么这就应该是一个抽象方法
在这里插入图片描述

抽象类和抽象方法的定义

在这里插入图片描述

抽象类的使用

抽象类的注意事项

在这里插入图片描述

不能直接new抽象类的对象,必须用一个子类来继承抽象父类,并重写所有抽象方法(两个类,一个对象)

抽象类

在这里插入图片描述
这是错误的
在这里插入图片描述
继承后的抽象子类,这是正确的
在这里插入图片描述

对子类生成对象

在这里插入图片描述
在这里插入图片描述

访问控制修饰符

public>protected>(default)>privated

private:代表私有的,修来饰变量自只能在本类访问,private方法子类不能继承。
public:是最大权百限,都可以访问,是公共的度。

Java中定义一个属性 为什么要加private?加和不加的区别是什么?

java是面向对象语言,一切成员都会封装在一个类中,定义成抄private是为了更好地隐藏,对外暴露的是setter和getter方法,所以可以通过setter设置值,getter来取值,达到模块隐藏的目的。

JAVA中的protected

我们采取的最好的做法是保持成员的private状态——无论如何都应保留对基
础的实施细节进行修改的权利。在这一前提下,可通过protected方法允许类的继承者进行受到控制的访问:
在这里插入图片描述

private的作用,通过getter和setter来做一些限制,进而在实例中更好的描述数据
private的作用

private age之后,只有当前类可以使用age,在实例中无法直接调用age ,必须用setter和getter来访问或者设置age。
在这里插入图片描述

类的定义

在这里插入图片描述

实例

在这里插入图片描述

练习private的使用(特别boolean中getter是用isXxx)

在这里插入图片描述

实例

在这里插入图片描述

this

当局部变量与全局变量重名时,会采取就近原则,使用局部变脸,当想用类中的全局变量是加this,this.name
在这里插入图片描述

区分类中的三种变量—super(父类中方法)、this(本类中)、原名(局部)

在这里插入图片描述

super的使用范围

在这里插入图片描述

this的适用范围
在这里插入图片描述

方法定义及调用

方法的定义(JAVA中没有函数,只有方法)

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

方法的三种调用格式

在这里插入图片描述

在这里插入图片描述

对比有参数方法和无参数方法

在这里插入图片描述

对比有返回值和无返回值的方法

对于无返回值的只能进行单独调用
对于有返回值的能进行单独调用、打印调用、赋值调用
在这里插入图片描述
在这里插入图片描述

使用方法的注意事项的总结
在这里插入图片描述

类和对象(含义、组成、如何定义和创建)

类:抽象(定义属性和行为,相当于图纸)
对象:类的具体化,变成可操作性的实体
在这里插入图片描述

类的定义(成员变量、成员方法)

ps: 1、成员变量与其他变量不同,定义在方法外面

2、成员方法不写static关键字
在这里插入图片描述
在这里插入图片描述

根据类创建对象

在这里插入图片描述

在对象中使用类的成员变量(使用或者改变)—有默认值

在这里插入图片描述

在对象中使用类的成员方法

在这里插入图片描述

定义一个标准的类

创建类(有参数,无参数,getter和setter)
在这里插入图片描述

在这里插入图片描述

生成对象

在这里插入图片描述

线程

start作用(使两个线程并发执行)

在这里插入图片描述

如何创建一个线程

1、extend一个线程类,重写线程类中的run方法
2、创建线程类中的子类对象
3、调用thread中的start方法,实现线程并发
在这里插入图片描述
1、extend一个线程类,重写线程类中的run方法
在这里插入图片描述2、创建线程类中的子类对象,调用thread中的start方法,实现线程并发
在这里插入图片描述
ps:主线程是靠main函数开启的
在这里插入图片描述

Thread类中的sleep方法(开一个线程,延迟时间-模拟时钟)

在这里插入图片描述

Thread类中的获取线程名称的方法

这里是引用

在类中重写run,定义出获取线程名称的操作(getName、currentThread)

在这里插入图片描述

创建一个子对象、进行输出

在这里插入图片描述

static关键字

在类中定义一个static关键字, 在对象中赋值之后,那么由此类生成的对象都共有static这个关键字,节省了内存空间

用static声明成员变量(静态变量)
student类,有name、age、和static room

在这里插入图片描述
在这里插入图片描述
这种情况下,两个对象都显示101教室

利用static进行idcounter
在这里插入图片描述

用static修饰成员方法(静态方法)
类中的静态方法不必要创建对象,直接类名:方法名
类中的成员方法必须要创建对象,调用对象中的方法才可以。

在这里插入图片描述
静态不能直接访问非静态在这里插入图片描述

匿名对象

new 类名;只能使用一次
在这里插入图片描述

在这里插入图片描述

构造方法

注意事项
在这里插入图片描述
类定义(定义了一个无参一个有参的构造方法)

在这里插入图片描述
生成对象(利用了有参,无参,getter、setter)

在这里插入图片描述

内部类

内部类的定义

在这里插入图片描述

内部类的方法以及使用
内部类可以访问成员变量,以及外部方法
在这里插入图片描述

Random、System、Date类的使用

Random是一个JAVA的类,使用的话首先把包含这个类的package导入,然后把这个类导入,然后要记住——类必须新建对象才能用!!!!在这里插入图片描述
得出带范围的Random
在这里插入图片描述
在这里插入图片描述

Data类的使用
在这里插入图片描述
System类

提供了大量系统级的操作或者获取系统相关的信息,比如说返回当前时间

在这里插入图片描述

获取以毫秒为单位的时间
在这里插入图片描述

在这里插入图片描述

接口

关于接口的详解
接口的格式

常量、抽象方法、默认方法、静态方法、私有方法在这里插入图片描述

接口中定义抽象方法,所有版本都可以在接口中定义抽象方法(public abstract)

在这里插入图片描述

接口的使用步骤

在这里插入图片描述

定义一个类implement接口定义,并重写其中所有的抽象方法

在这里插入图片描述

创建该抽象类的对象

在这里插入图片描述

从Java8开始 接口中可以定义默认方法(为了解决更新接口的问题)

在这里插入图片描述
创建实现类对象,直接使用默认方法
在这里插入图片描述

接口中定义常量

在这里插入图片描述
访问接口中的常量(直接用方法.常量)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值