java概念知识点总结
一、基础语法
- java内存模型和内存区域以及执行过程理解
- 特例: 基本类型(八大基本类型(boolean、char、byte、short、int、long、float、double)
1) 因为对于一些小的、简单的变量,在new中创建对象往往不是很有效,于是设置了基本类型
2) java中所有不带小数点的类型都默认是int类型,带小数点的默认类型为double类型long类型后面要加l(因为默认是int类型),float类型后面加F,double类型后加D(为了区别float和double)
3) java中所有基本类型都有固定的内存大小,不随机器硬件架构的变化而变化
4) 所有的数值类型都有正负号,所以不要去寻找无符号的数值类型
5) boolean类型所占存储空间的大小没有明确指定,仅定义为能够取字面值true和false - 引用类型(类、接口、数组)
- 垃圾回收器:因为在堆中创建的对象不能自动释放,所以java中有个垃圾回收器,用来监视用new创建的所有对象,并辨别那些不会再被引用的对。随后,释放这些对象的内存空间,以便供其他新的对象使用
- 基本成员默认值:若类的某个成员是基本数据类型,即使没有进行初始化,java也会确保它获得一个默认值。当变量作为类的成员使用时,java才确保给定其默认值。所以上述初始化不适用于局部变量(即并非某个类的字段)
- 方法的基本组成:名称、参数、返回值
- Java语言最大的特点:跨平台性(一次编译,多次执行,一般Window下开发,在Linux下面部署)
- 拆箱和装箱:装箱就是将基本类型转换为对象类型,拆箱就是将对象类型转换为基本类型。
二、方法和数组
- 访问控制符:
1)private:这个成员只能在当前类的内部被访问
2)default:可以被相同包下的其它类访问
3)protected:可以被同一个包中中的其他类访问,也可以被不同包中的子类访问
4)public:可以被所有类访问
java不同访问修饰符总结(必看) - 访问修饰符: 定义为static,则强调只有一份,定义为final,则说明是个常量
1)static关键字:
通常来说,当创建类时,就是在描述那个类的对象的外观和行为。除非用new创建那个类的对象,否则,实际上并未获得任何对象。有两种情形是上述情况无法解决的,一种情况是,只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本不创建任何对象。另一种情况是,希望某个方法不与包含它的类的任何对象关联在一起,也就是说,即使没有创建对象,也能够调用这个方法。通过static可以满足这两方面的需要。
static方法就是没有this的方法,所以不能调用非静态方法和非静态成员
static静态变量和非静态变量的区别:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
只有类才存在静态的变量 方法只能对静态变量的操作 不能在方法内试图定义静态变量 否则的话会抛出编译错误 静态变量的本意是为了让所有的对象共享这个变量,如果在方法里面定义静态变量的话就存在逻辑错误了,也达不到你想要目的. 因为在方法定义静态变量根本没有他的任何意义. 任何对象都有自己的方法,即使是静态方法,方法内的变量也是在方法调用时候才开始分配内存,所以想给成静态的在逻辑上存在问题
2)final:
对于基本类型,final使数值恒定不变;用于对象引用,final使引用恒定不变。一旦引用被初始化指向一个对象,就无法再把它改为指向另一个对象。
final修饰方法表示该方法不能被重写和继承,可以关闭动态绑定
当将某个类的整体定义为final时,就表明了你不打算继承该类,也不允许别人这么做,由于final类禁止继承,所以final类中所有的方法都隐式指定为是final,因为无法覆盖它们。
final和private关键字:类中所有的private方法都隐式地指定为是final的。由于无法取用private方法,所以也就无法覆盖它。可以对private方法添加final修饰词,但这并不能给该方法增加任何额外的意义。
3)如果一个域被定义为static final,则这个域就是一个静态常量。不能省略任何一个关键字,若是少了static,则该域变成了一个实例域,需要由类对象对其进行访问。若是省略了final,则该域变成了静态域,静态方法可以对其进行修改。 - 数组初始化·:
1) int []a=new int[10];
2) int []a={10,11,12};
3) new int[]{10,11,12}; - 对于数组,new只是为其分配内存空间,并不创建对象
-
interface U
-
{