java基础知识重点笔记

XIAO 2020-05-16 15:28:29 java常见问答 4372

刚刚入门学习java的你,是否也感到十分迷茫,java基础知识多如牛毛,可是自己却难以掌握起来,下面可以跟小编一起来看看java基础知识的重点笔记哦。

环境变量配置

JAVA_HOME:jdk路径

Path:要把jdk的bin目录路径,添加到path变量

八种数据基本类型

比较简单此处不单独罗列

引用数据类型:数组,类,接口

1 char :Unicode编码的字符,或字符的整数编码,必须用单引号

float默认值是0.0f;

double默认值是0.0d;

2基本类型字面值规则

整数字面值是int类型,如果右侧赋值超出int范围,需要做转型处理

byte,short,char 三种比int小的整数,在自身范围内可以直接赋值。

byte d=1+3 正确,1+3编译器会自动转成4

浮点数字面值是double;浮点数转成整数会直接舍弃小数点后位数。

字面值后缀,L D F

字面值前缀,0b 二进制;0x 16进制;0 8进制; u char 类型16进制

基本类型的运算规则

1.计算结果的数据类型与运算中的最大类型一致。

2.byte,short,char三种比int小的整数,计算时会自动转成int

做加法运算时,数据类型会自动转成int,除了自增加自减不进行转化外,其它情况都是无long型时,所有非int类型转成int类型;有long类型时,都转成long类型。

char类型相加,提升为int类型。

3.整数运算溢出。Integer.MAX_VALUE+1 得负数最小值

4.浮点数运算不精确

5.浮点数特殊值 infinity 整数除0 ;Nan 负数开方

 基本类型的类型转换

数字类型之间可以互相转换,从小到大自动转换,从大到小需要强制转型。

double d = 245; float d=100;自动转型

运算符

&& :逻辑与(短路与),两边同为真结果才为真,短路与:左边是假,右边忽略不执行

& :不管左边结果是什么都要执行右边(&的左右两边都要参与运算)

|| :逻辑或(短路或),两边只要有一个真结果就是真,短路或:左边是真,右边忽略不执行

.流程控制

1. switch:只能判断byte short char int enum jdk1.7之后的string。

从成立的case 无条件穿透所有的case包括default直到结束或者遇到break中断跳出循环;

如果所有条件都不成立,则执行default

2 .for循环

3 .break 和 continue

Break 中断、跳出循环和switch

Continue 跳过后面的代码 继续进入循环的下一轮执行

4.for-each循环

数组遍历、集合迭代遍历的语法简化

面向对象 —— 封装、继承、多态 

封装

类:模板、图纸 。类中定义对象的属性数据(成员变量),方法(成员方法)

类第一次使用时会加载到方法区

对象:从模板中创建的具体实例,实例是数据的打包

新建实例时,在堆内存中新分配内存空间给这个实例

引用变量:理解成“遥控器”,保存一个实例的内存地址(引用变量保存在栈),引用变量的特殊值:null 不保存任何实例的内存地址

构造方法:新建实例对象时,立即执行的一个特殊方法;构造方法必须和类同名,并且没有返回值类型。

一个类中必须有构造方法,自己没定义,系统会添加默认构造方法,构造方法一般用来给属性赋值

构造方法重载

一个类中可以定义多个不同参数的构造方法,是方法重载的一种体现

方法重载Overload:同名不同参,与返回值类型无关,所有方法都可以重载

this关键字:this.xxx 特殊引用,引用当前对象的地址

this(…):构造方法之间的调用,必须是首行代码,如果有多个构造方法,会通过this(…)调取下面的所有构造方法,完成赋值。

注意this不能在静态方法中使用

继承

Java的继承是单继承多实现,只能继承一个父类(如果不继承其他类,默认继承object类),但可以实现多个接口

1.不能继承的有:构造方法,私有成员

过程:先新建父类对象,再新建子类对象,两者作为一个整体对象,调用成员时,先找子类,再找父类

2.方法重写:override

继承的方法,在子类中重新定义父类中的方法(只能在子类重写),方法名相同,参数的个数和类型也必须相同,返回值类型也必须相同。

方法重写返回值类型如果是基本类型应与父类的一致;重写要求方法名完全相同,返回值类型如果是基本类型或无返回值时必须一致。

3.父类的构造方法

新建子类对象时会先新建父类对象,也会先执行父类的构造方法

默认执行父类的无参构造,默认隐含调用super();

new Student() 默认执行父类无参构造

new Student(……)默认执行父类无参构造

手动调用父类的有参构造,super(参数):父类没有无参构造时必须手动调用

super

Super.xxxx() 方法重写时,调用父类中同一个方法的代码

Super(参数) 调用父类的构造方法,默认调用父类无参构造super(),手动调用有参构造super(),必须是首行代码

注意super不能在静态方法中使用

多态

一个对象具有多种形态的表现,多态的前提是必须有继承。

void f(父类型 o1) { }

把一个子类型的实例当做父类型来处理,所有的子类型都可以传递到该方法,被当做父类型处理;作用:一致的类型

1. 类型的转换

A. 向上转型

子类的实例转成父类型,用父类型的引用变量,来引用子类实例,向上转型后,只能调用父类定义的通用成员,子类特有成员被隐藏

B. 向下转型

已经转成父类型的子类实例,转回子类型为了对子类型进行特殊处理

2. Instanceof 运行期类型识别

当多种子类型都被当做父类型来处理,要对某种子类型进行特殊处理,可以先判断其真实类型再向下转型——对真实类型,及其父类型判断,都返回true。格式:

s instanceof Line

数组

属于object类,用来存放一组数据的数据结构,数组是最基本的一种数据结构但不是基本数据类型,数组是相同数据类型组成的集合,数组中的元素按线性顺序排序

数组的创建

数组创建后若未指定初始值,则会依据数组类型的不同来设置默认值

int[] a = new int[6];

新建int[]数组,长度6,默认值都是0,数组的起始地址值保存在变量a。

int[] a = {6,2,6,8};

Int[] a= new int[]{1,2,3,4,5};

a = new int[]{7,3,8,1,7,9,3,1};

为存在的数组变量赋值直接初始化数据,要添加数据类型

数组的长度属性 a.length

数组一旦创立,长度不可变

最大下标 a.length-1

允许0长度的数组

 二维数组

存放数组的数组

int[][] a = new int[3][2];

外围长度为3,内部3个数组长度为2,一共有4个数组,内部数组默认值0,外围数组保存的是内部数组的地址。

int[][] a = new int[3][];

只建一个外围数组长度3,3个位置都是null,之后可以建新数组放入内部。

Arrays 数组工具类

Arrays.toString(数组) 把数组数据连接成字符串。

Arrays.sort(数组) 数组排序 基本类型:优化的快速排序;引用类型:优化的合并排序。

Arrays.binarySearch(数组,目标值) 二分法查找,在有序数组中查找目标值下标,找不到返回 -(插入点+1)。

Arrays.copyof(数组,长度) 复制数组成一个指定长度的新数组。

 数组 复制

Arrays.copyof(数组,长度) 复制数组成一个指定长度的新数组

System.arraycopy(原数组,原数组起始位置,目标数组,目标数组起始位置,复制的数量) ——不会创建新的数组,目标数组要事先存在。

 变量

1 局部变量:定义在方法中或局部代码块中,必须初始化(第一次赋值时分配内存空间)

局部变量的作用域在定义它的大括号内有效,在作用范围内不能重复定义。

2 成员变量:定义在类中,自动初始化默认值,访问受访问控制符限制;局部变量可以和成员变量同名。

Object类

如果一个类不继承其他类,则默认继承Object类

1.方法

toString()获得一个对象的字符串表示。

Object中的默认实现是:“类名@地址”可在子类中重写toString方法。

equals() 当前对象与参与对象比较是否相等。

a.equals(b) Object中的默认实现是比较内存地址。

this == obj:==

Object中比较内存地址,基本类型默认比较内容值。

字符串不可变且字符串连接效率低,每次连接都会新建字符串对象

字符串的常用方法

charAt(i) 获取指定位置的字符

length() 字符串长度,字符的数量

indexof()找第一个子串出现的初始位置,找不到返回-1

indexof(子串,start)从执行位置向后找

lastIndexof(子串) 从后向前找

subString(start)截取start到末尾

subString[start,end )截取[start,end )范围

trim()去除两端的空白字符

matches()用来判断是否匹配正则表达式

StringBuilder: 可变的字符序列,封装char[]数组,提供了一组方法,可以对内部封装的字符进行修改,常用来代替字符串做高效的字符串连接

append() 追加字符内容,内部数组默认初始容量16,放满后翻倍+2;

delete(start,end) 删除区间(start,end);

deleteCharAt(i)删除指定位置 i;

insert(i,内容) 在指定位置插入内容;

insertCharAt(i,字符)在指定位置插入单个字符;

replace(start,end,内容)替换指定范围的内容;

StringBuilder和StringBuffer

StringBuilder:线程不安全,效率高;JDK1.5版本后的新类。

StringBuffer:线程安全,旧版本的类。

正则表达式

一般用来判断用户的输入内容是否符合格式要求

matches()字符串的方法,用来判断是否匹配

if(s.matches(regex)) {}

1.split(正则):用匹配的子串来拆分字符串

String s = "aaa,bbb,ccc";

String[] a = s.split(",");

2.replace(正则,子串)替换所有匹配的子串

好了,以上即是本篇文章的全部内容了,还想了解更多java入门知识的话,记得多多关注本站信息,海量内容等你来获取。

推荐阅读:

java学习笔记整理,如何整理java笔记?

java基础知识总结大全( java基础知识点汇总)

java最全基础知识(java入门基础知识)