Java中的基本数据类型:(八大基本类型)
整型 : byte、short、int、long
浮点型 : float、double
字符型:char
布尔型:blloean
所占字节数:
byte :1字节
short: 2字节
int : 4字节
long : 8字节
float : 4字节
double: 8字节
char: 2字节
boolean: 1字节
JVM=java虚拟机
JRE=Java虚拟机+核心类库 ----------- 是运行Java程序的环境
JDK=Java虚拟机+核心类库 +编译工具
所谓的跨平台性,是指Java语言编写的程序,一次编译之后可以在多个平台上运行。
原理:只需要在要运行Java代码的系统上安装一个JVM即可。由JVM负责Java程序在该系统中的运行。所以Java可以跨平台
break:结束当前循环
continue:跳出本次循环,继续执行下次循环
return:程序返回,不再执行下面的代码
这两个都是自增的操作
i++ 是先使用后自增
++i 是先自增在使用
比如:
int i=1; int j=i++; return j; j=1
int i=1; int j=++i; return j; j=2
可以,char是两个字节,一个中文是两个字节。
两个条件:
一是数据类型要匹配
二是目标类型大于原类型
三大特性是:封装,继承,多态
封装:封装就是把客观事物抽象封装成类。
1.简单的说一个类就是一个封装了数据以及操作这些数据的算法。
2. 对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。
继承:继承是指可以让某个类型的对象获得另一个类型的对象的属性的方法。
多态:多态是同一个行为具有多个不同表现形式或形态的能力
静态变量前要加static 关键字,而实例变量前则不加。
1.实例变量是某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。
2. 静态变量不属于某个实例对象,而是属于类,所以也称为类变量。
3. 实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
重写是什么?当一个类继承一个抽象类,或者一个实现类实现一个接口的时候。需要在这个类里面重写抽象类里面的抽象方法,重写接口中的抽象方法。重写的方法名,参数数目相同,参数类型兼容。方法的修饰符等于或者大于原修饰符的范围。
重载是什么?,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者重载方法。
1.重写的前提是继承或者实现。重载不需要这些前提
2.重写需要 方法修饰符等于或者大于原修饰符的范围;方法名相同;参数列表相同。而重载只需要方法名相同,参数列表不同
3.重写不可以抛出父类没有抛出的一般异常,可以抛出运行时异常
abstract class称为抽象类。
什么是抽象类?
我们把用abstract修饰的方法,称为抽象方法。抽象方法没有方法体。而我们把含有抽象方法的类称为抽象类,必须用abstract修饰,这就是 abstract class
interface称为接口
什么是接口?
接口就是特殊的抽象类,里面所有的方法都是抽象方法,没有一般方法。但是在jdk1.8版本后推出了接口中也可以有一般方法,需要用default ,static修饰
二者的区别:
1.抽象类有构造方法,接口没有构造方法
2.接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final
1.接口可以继承接口(接口具有特性:多继承多实现)
2.抽象类可以继承接口
3.抽象类可以继承具体类(类与类之间的继承只能单继承)
GC是Java特有的垃圾回收机制
GC的作用:
1.Java提供的GC功能可以自动监测回收不被引用的对象,释放其占用的内存
2. 如果要请求垃圾收集,可以调用下面的方法之一:System.gc()或Runtime.getRuntime().gc(),这些方法会通知GC尽快进行内存垃圾回收
3. 在对象使用以后要及时释放其引用,有利于垃圾回收,可以有效的防止内存泄露。
类:String 、StringBuffer、StringBuilder
String与StringBuffer和StringBuilder最大的区别在于String声明的是不可变的对象,每次操作都会生成新的String对象,然后将指针指向新的String对象。而StringBuffer和StringBuilder可以在原来对象的基础上进行操作,所以在经常要改变字符内容的情况下最好不要使用String
StringBuilder和StringBuffer的区别在于:StringBuffer线程安全效率低一点,StringBuilder线程不安全效率高。所以在单线程的时候使用StringBuilder效率高,多线程情况下使用StringBuffer安全。
不能被继承,因为String类是final类,final修饰的类是不能被继承
1.==比较,比较的是地址值是否相同,地址值相同则相等
2.equals比较的是内容是否相同,由于equals默认是等等比较。需要重写equals方法使其比较的是内容