刚刚入门学习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入门知识的话,记得多多关注本站信息,海量内容等你来获取。
推荐阅读: