一:JAVA平台无关系:
JVM平台本身:提供缓冲角色。
语言本身:基本类型的值域与行为由语言本身定义
Class文件:在任何平台上创建Class文件。
可伸缩性:改变API:J2EE、J2SE、J2ME
二:JAVA还支持什么语言:
Kotlin、Groovy、JRuby、Jython、Scala
三:值传递
1:值传递、引用传递
堆栈中的存放:值类型(行参为基本数据类型、放在栈中,当值在引用类型中声明时,存放在堆中);引用类型(形参为引用类型,放在堆中,堆中的内存地址放在栈中)
传值:值类型(值传递、也可通过ref、out修饰,调用引用传值,将变量的一个副本传入方法,不改变原来的值);引用类型(引用传递,将变量的内存地址传递给方法,保存至原变量的内存地址,改变值)。
2:为什么说JAVA只有值传递?
不是参数是引用类型就是引用传递。JAVA是值传递,Ref 、out 修饰后或者String等对象作为引用类型传值、其实依然是拷贝、但即使是拷贝他仍然是指向内存地址,故而也是可以改变值。
四:封装、继承、多态。
1:JAVA的继承与实现:
子类继承父类,除了父类的私有属性与方法外,都可以继承下来,并可以实现对父类方法的重写与重载。
子类实现一个接口,必须实现接口里的所有方法。
2:构造函数与默认构造函数
构造方法名与类名相同,无返回值,对象一建立就会调用构造函数,并且只会调用一次,进行属性的初始化。而一般的函数需要用.来调用后才初始化。(使类和方法一般可以传参数),只有构造参数可以调用构造参数。默认构造参数时JVM默认一个为空的构造参数,可以隐藏不写,但是真实存在。
3:类变量、成员变量、局部变量:
类变量:静态变量,用static修饰,可以通过类名直接调用、也可以通过对象名调用,存储在方法区中的静态区,生命周期和类一样,是所有对象共享的。
成员变量:实例变量。只可以通过对象名调用,存储在堆内存中,生命周期和对象一般,是对象特有,有默认初始值。
局部变量:在某方法体与语句体中存在,存储在栈内存中,语句结束,自动释放,必须初始化赋值。
4:成员变量和方法作用域:
作用于整个类