java基础

这篇博客详细介绍了Java的基础知识,包括语法基础如标识符和运算符,基本类型转换和字面值规则,流程控制结构,成员变量与局部变量的区分,方法的定义与重载、重写,数组的创建和特性,面向对象的封装、继承和多态概念,以及构造函数、代码块的使用,关键字如this、super、static和final的应用。
摘要由CSDN通过智能技术生成

1.语法基础

1.1标识符

1.标识符可以由字母、数字、下划线(_)、美元符($)组成。
2.不能以数字开头。
3.严格区分大小写。
4.不能是java的关键字。

1.2运算符

1.+ - * /
2.取余%
3.自增自减运算符
++ :表示变量本身的值+1 – : 表示变量本身的值-1
前缀式:符号在前,先改变变量本身的值,再使用,比如打印,计算…
后缀式:符号在后,先使用,再改变变量本身的值
4.比较运算符
!=,==,>,<.>=,<= 比较的结果都是布尔类型的
5.逻辑运算符
&&:双与/短路与:逻辑与单与相同,全真才真,只不过增加了短路的效果
||:双或/短路或:逻辑与单或相同,全假才假,只不过增加了短路的效果
6.三目运算符
格式:1?2:3; 1是表达式,若1为真则取2,若1为假则取3

2.基本类型

在这里插入图片描述

2.1类型转换

1.boolean类型不参与类型转换
2.小转大,直接转 – 隐式转换
3.大转小,强制转 – 显式转换,格式:byte b = (byte) a;
4.浮点数变整数,小数没 – 浮点型转整形是直接舍弃所有的小数部分的,不会四舍五入
在这里插入图片描述

2.2字面值规则

1.整数默认为int类型
2.小数默认为double类型
3.byte short char 三种比int小的类型,可以使用范围内的值直接赋值
4.字面值后缀:L F D
5.字面值前缀:0b-二进制 0-八进制 0x-十六进制

2.3运算规则

1.运算结果的数据类型与最大类型保持一致
2.3种比int(byte、float、char)小的类型,运算时会自动提升成int再运算
3.整数运算溢出的问题,一旦溢出,数据就错误了
4.浮点数运算不精确
5.浮点数的特殊值 Infinity NaN

3.流程控制

3.1分支结构

if(判断条件){
	执行代码;
}

3.2多分支结构

if(判断条件){
	执行代码;
}else{
	执行代码;
}

3.3嵌套分支结构

if(判断条件){
	执行代码;
}else if(判断条件){
	执行代码;
}

3.4选择结构

switch(条件){
	case 1: 操作1; break;
	case 2: 操作2; break;
	default: 以上条件都不符合执行此操作;
}

3.5循环结构

for(开始条件;循环条件;更改条件){
循环体;
}

4.成员变量与局部变量

4.1成员变量:

1)位置:类里方法外
2)有默认值,不需要手动赋值
3)在整个类中生效,类消失,成员变量才会随之释放

4.2局部变量

1)位置:方法里/局部代码块里
2)必须要手动初始化
3)在方法里/局部代码块中,对应的代码执行完毕后,局部变量也随之释放

5.方法

5.1格式

修饰符 返回值类型 方法名(参数列表){
方法体;
}

5.2方法重载

1.在同一个类中
2.多个方法的方法名相同
3.同名方法的参数列表不同
1)如果参数个数不同,一定构成重载
2)如果参数个数相同,需要查看对应位置上的参数类型,与参数名无关

5.3方法重写

前提:子类继承父类
语法规则:
两同:子类与父类的方法名和参数列表相同
两小:1.子类方法的返回值类型 < 父类方法的返回值类型
2.子类方法抛出的异常类型 < 父类方法抛出的异常类型
一大:子类方法的修饰符 > 父类方法的修饰符

5.4重载与重写的比较

1.重载:在一个类中的现象,同一类中,存在方法名相同,参数列表不同的方法
2.重写:是指建立了继承关系以后,子类对父类的方法不满意,可以重写,遵循两同两小一大的原则
3.重载的意义:是为了外界调用方法时方便,不管传入什么样的参数,都可以匹配到对应的同名方法
4.重写的意义:在不修改源码的情况下,进行功能的修改与拓展

6.数组

6.1数组创建

静态创建
int[] a = {1,2,3};
int[] a = new int[]{1,2,3};
动态创建
int[] a = new int[3];

6.2数组的创建过程

1.在内存中开辟连续的空间,用来存放数据
2.给数组完成初始化过程,给每个元素赋予默认值
3.数组完成初始化会分配一个唯一的地址值
4.把唯一的地址值交给引用类型的变量a去保存
5.如果想要操作数组中的元素,可以根据变量保存的地址找到数组,然后根据下标来操作数组的具体元素
数组名保存的是数组的地址值,不是数组中每一个具体的元素,数组名是一个引用类型的变量

6.3数组的特性

1.数组一旦创建,长度无法改变
2.数组的下标从0开始,最大下标为数组长度-1

6.4数组的工具类Arrays

1.toString(数组名),除了char类型外,其他类型的数组想要查看数组的具体元素,都得使用这个方法,如果不用的话,打印的是数组的地址值。
2.sort(数组名),给数组排序
3.copyOf(要复制的数组,新数组的长度)
不管是什么长度,都不会修改原数组,而是创建新数组
4.System.out.println(Arrays.toString(方法名); 可以查看数组中有那些元素

7.面向对象

7.1三大特征之一——封装

7.1.1为何要进行封装

1.封装可以提高程序的安全性
2.封装可以让资源按照我们预先规定的方式来操作

7.1.2属性的封装

用private修饰属性,一旦属性被修饰,就只能在本类中使用,外界无法访问,需要提供供外界访问的get()与set()方法。

7.1.3方法的封装

用private修饰方法,如果想要调用私有方法的功能,就需要在本类的公共方法里调用这个私有方法。

7.2三大特征之一——继承

1.继承的关键字:extends
2.继承相当于子类把父类的功能复制了一份,包括私有资源
3.Java支持单继承:一个子类只能有一个父类
4.继承具有传递性
5.子类只可以使用父类的非私有资源,原因是私有资源不可见
6.子类可以拥有自己的特有功能
7.继承耦合性非常强
继承中构造方法的使用
1.我们每次创建对象的时候,都会触发构造函数
2.创建子类对象时,会先调用父类的无参构造,因为子类的构造函数中默认存在一个super();
3.如果父类没有无参构造的话,我们需要手动指定子类去调用父类的含参构造super(参数);
4.构造方法不可以被继承,原因是:构造方法名必须是本类的类名,不可能在子类中存在一个父类名字的构造方法。

7.3三大特征之一——多态

**前提:**继承 + 重写
口诀:
1.父类引用指向子类对象
父类类型的引用变量保存的是子类类型的对象的地址值
2.编译看左边,运行看右边
编译时要看父类是否定义了这个资源,运行时使用的是子类的功能
多态的使用
1.成员变量使用的是父类的
2.成员方法使用的是父类的方法定义,子类的方法体
3.如果多态对象调用的是子类没有重写过的方法,方法定义与方法体使用的都是父类的,所以这个不符合多态的前提,直接使用纯纯的父类对象调用即可
4.静态资源属于类资源

8.构造、代码块

8.1构造函数

**格式:**与本类类名相同,且没有返回值类型
**作用:**创建对象,创建一次,执行一次构造函数
分类:
1)无参构造:默认存在,如果添加了其他构造,默认的构造函数会被覆盖
2)含参构造:对于参数没有任何要求,有参数就行
3)全参构造:全参构造的参数必须与本类属性一致
全参构造不仅可以创建对象,还可以给对象的所有属性赋值。

8.2构造代码块

**位置:**类里方法外
**执行时机:**每次创建对象时执行,并且优先于构造方法执行
**作用:**用于提取所有构造方法的共性功能

8.3局部代码块

**位置:**方法里
**执行时机:**调用本局部代码块所处的方法时执行
**作用:**用于控制变量的作用范围

8.4静态代码块

格式: static{}
**位置:**类里方法外
**执行时机:**随着类的加载而加载,优先于对象进行加载(只加载一次)
**作用:**用于加载那些需要第一时间就加载,并且只加载一次的资源,常用来初始化

8.5代码块执行顺序

静态代码块 -> 构造代码块 -> 构造方法 -> 普通方法(如果普通方法里有局部代码块,执行局部代码块)

  • 如果有多个静态资源,加载顺序取决于先后位置
  • 静态资源不可以与thissuper共用

9.关键字

9.1this的用法

1.当成员变量与局部变量同名时,使用this指定成员变量
2.使用this在构造方法的第一行调用构造方法的功能
this(); 调用的是本类的无参构造
this(参数); 调用的是本类对应参数的构造方法

9.2super的用法

1.当父类的成员变量与子类的成员变量同名时,使用super.变量名指定父类的成员变量
2.使用super在子类构造方法的第一行调用父类构造方法的功能
super(); 调用的是父类的无参构造
super(参数); 调用的是父类对应参数的构造方法

9.3static关键字

1.static可以修饰成员变量和方法
2.静态资源随着类的加载而加载,最先加载,优先于对象进行加载
3.静态资源可以通过类名直接调用,也被称作类资源
4.静态被全局所有对象共享,值只有一份
5.静态资源只能调用静态资源
6.静态区域内不允许使用this与super关键字

9.4final关键字

1.修饰类:最终类,不可以被继承
2.修饰方法:这个方法的最终实现,不可以被重写
3.修饰常量:值不可以被更改,并且常量定义时必须赋值

  • 常量的定义需要使用全大写,单词之间使用下划线分割
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老汤姆.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值