Java知识点
数组:
数据类型[]数组名 = new 数据类型[元素个数或数组长度];
int[] x = new int[100];
arr[0] = 1
arr[1] = 2
类型[]数组名 = new 类型[]{元素,元素,……};
int[] arr = new int[]{1,2,3,4};
类型[]数组名 = {元素,元素,元素,……};
int[] arr = {1,2,3,4};
static
当在定义类的时候,类中都会有相应的属性和方法。而属性和方法都是通过创建本类对象调用的。当在调用对象的某个方法时,这个方法没有访问到对象的特有数据时,方法创建这个对象有些多余。可是不创建对象,方法又调用不了,这时就会想,那么我们能不能不创建对象,就可以调用方法呢可以的,我们可以通过static关键字来实现。static它是静态修饰符,一般用来修饰类中的成员。被static修饰的成员变量属于类,不属于这个类的某个对象。(也就是说,多个对象在访问或修改static修饰的成员变量时,其中一个对象将static成员变量值进行了修改,其他对象中的static成员变量值跟着改变,即多个对象共享同一个static成员变量)
面向对象三大特征
封装、继承、多态
封装:是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制。封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。减少耦合,类内部的结构可以自由修改,对成员变量进行更精确的控制,隐藏信息,实现细节。
继承:是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
多态:
一般分为重写式多态和重载式多态,简而言之就是同一个行为具有多个不同表现形式或形态的能力,运行时多态的前提:继承,重写,向上转型。
public 权限修饰符,公共访问类,方法成员变量
protected 权限修饰符,受保护访问方法成员变量
默认什么也不写也是一种权限修饰符,默认访问类方法成员变量
private 权限修饰符,私有访问方法成员变量
static 静态修饰符方法成员变量
final 最终修饰符类方法成员变量局部变量
abstract 抽象修饰符类方法
B: 不能同时使用的修饰符
同时,abstract与private不能同时使用;
同时,abstract与static不能同时使用;
同时,abstract与final不能同时使用。
C: 修饰类能够使用的修饰符:修饰类只能使用public、默认的、final、abstract关键字使用最多的是 public关键字
public公共的
protected受保护的默认的
private私有的
final最终的
static静态的
使用最多的是 private
==和equal的联系与区别:
最大的区别是,==是运算符,equal是方法
java基本类型(short,int,long,byte,char,float,double,boolean)
比较基本类型,只能用==,不能用equal,这里的==比较的是两个变量的值
==比较的是内存地址,因为a和b是new出来的,是两个不同的对象,所以地址肯定是不同的,而equal比较的是值,
==比较的是内存地址,equal+比较的是值
==和equal比较的都是内存地址,因为equal没有被重写,没有被重写的equal都是object的equal方法
线程的五种状态
线程共包括以下5种
1.新建状态(New):线程对象被创建后,就进入了新建状态。例如,Thread thread = new Thread()。
2.就绪状态(Runnable):也被称为“可执行状态”。线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程。例如,thread.start()。处于就绪状态的线程,随时可能被CPU调度执行。
3.运行状态(Running):线程获取CPU权限进行执行。需要注意的是,线程只能从就绪状态进入到运行状态。
4.阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。阻塞的情况分三种:
(01)等待阻塞--通过调用线程的wait()方法,让线程等待某工作的完成。
(02)同步阻塞--线程在获取synchronized同步锁失败,它会进入同步阻塞状态。
(03)其他阻塞--通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。
5.死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。
创建字符串
String str = "HelloWorld";
String str=new String("HelloWorld");