当前位置:   article > 正文

Java基础总结_cnds jdr

cnds jdr

1.面向过程和面向对象

面向过程:性能比面向对象高,没有面向对象容易维护、复用、拓展

面向对象:性能比面向过程低,易于维护,复用,拓展

ps:面向过程也需要分配内存,Java性能差的原因是Java是半编译语言,最终的执行代码并不是可以直接被CPU使用的二进制机械码

2.Java特点

  • 简单易学
  • 面向对象
  • 平台无关性
  • 可靠性
  • 安全性
  • 支持多线程(C++没有多线程,需要调用操作系统的多线程设计)
  • 支持网络编程
  • 编译和解释并存

3.JVM 、JDK 、JDR

JVM

运行Java字节码的虚拟机

字节码

JVM可以理解的代码就是字节码(即扩展名为.class的文件),只面向虚拟机,解决传统语言效率低,保留编程可移植

Java程序运行过程

ps:.class这一步会比较慢,因为是解释器边解释边执行

总结:

JVM是运行字节码的虚拟机,JVM针对不同系统特定实现,目的是使用相同的字节码,都会返回相同的结果

JDK,JRE

JDK(Java Development Kit(成套工具)),功能齐全的Java SDK,有JRE的一切,还有编辑器(javac)和工具(javadoc)

JRE是Java运行时环境,包括JVM,JAVA类库

5.Java和C++区别?

  • 都是面向对象的语言,支持封装、继承、多态
  • Java不提供指针访问内存,更安全
  • Java单继承,C++支持多重继承
  • Java有自动内存管理机制,可以自动释放内存

8.字符型常量和字符串常量

1.形式上:字符单引号’’,字符串双引号""

2.含义上:字符常量相当于一个整型值(ASCII值),字符串常量代表一个地址值(字符串在地址里面的位置 )

3.内存大小:字符:两字节,字符串:若干字节

img

9.构造器Constructor可否被override

父类私有属性构造方法不可被继承,所以Constructor不可被重写,但是可以overload

10.重载和重写的区别

  • 重载:发生在同一个类方法名必须相同参数类型不同,个数不同,顺序不同,返回值,修饰符可以不同
  • 重写父子类中方法名,参数列表相同
    • 返回值范围小于等于父类
    • 异常范围小于等于父类
    • 访问修饰符大于等于父类

11.三大特性:继承、封装、多态

封装:

封装把一个对象私有化,同时提供一下外界可以访问属性的方法

继承:

继承是使用已存在的类的定义作为基础建立新类的技术,新类可以添加新的数据或新的功能,也可以用父类的功能,继承方便我们复用代码

ps:

1.子类拥有父类所有的属性和方法(包含私有方法和私有属性),但是父类的这些子类无法访问,只是拥有

2.子类可以有自己的属性和方法

3.子类可以以自己的方式实现父类

多态:

所谓多态就是指程序中定义的引用变量所指向的具体类型通过该引用变量发出的方法调用在编程时并不确定

引用变量引出的方法到底是哪个类实现的方法,必须程序运行期间决定

实现多态:

  • 继承(多个子类对一个方法重写)
  • 接口(实现接口并覆盖接口中的同一个方法)

12.String StringBuffer StringBuilder

String

String用final修饰,是不可变的

StringBuffer和Builder继承与AbstractStringBuilder类 没有被final修饰

线程安全性
  • String常量–线程安全
  • StringBuffer-加了同步锁-线程安全
  • StringBuilder- 未加同步锁-线程不安全
性能
  • String每次都会生成一个String对象
  • StringBuffer每次会对对象本身进行操作
  • StringBuilder对比StringBuffer只有10-15%性能,还要冒着多线程不安全风险
总结:

1.少量数据:String

2.单线程大量:StringBuilder

3.多线程大量:StringBuffer

13.自动装箱和拆箱

  • 装箱:将基本类型用他们对应的引用类型包装
  • 拆箱:将包装类型转换为基本数据类型

14.在一个静态方法内调用一个非静态成员为什么是违法的

静态方法不通过对象调用,所以静态方法不能调用非静态变量

15. 在 Java 中定义一个不做事且没有参数的构造方法的作用

Java在执行子类构造方法前,如果没有用super()调用父类特定构造方法,则会调用父类"无参构造",如果只有有参构造,则没有super调用的无参构造,编译会出错

16.Import java 和javax

原来导入的是Java包,后来javax成为JavaAPI一部分,所以,实际上没有区别

17.接口和抽象类区别

1.接口默认public,不能有实现(Java8可以),抽象类可以有非抽象方法

2.接口只能有static,final变量,抽象类不一定

3.一个类可以实现多个接口,只能实现一个抽象类,接口extends拓展多个接口

18.成员变量和局部变量

语法形式:

成员变量:属于类,可以被public,private,static修饰

局部变量: 方法定义的变量或者方法的参数,不能被访问修饰符static修饰

都可以被final修饰

内存存储

static修饰成员变量属于类,不修饰是属于实例,对象存在于堆内存,局部变量存在于栈内存

内存的生存空间:

成员变量随对象创建存在,局部变量随方法调用消失

赋值:

成员变量如果没有赋值会自动赋值,局部不会

19. 创建一个对象用运算符

new进行创建,对象堆内存对象实例栈内存

20.方法返回值

值得是我们获取方法体代码执行后产生的结果,作用:接收结果,便于其他操作

21.类的构造方法的作用

一个类的构造方法的作用是什么? 若一个类没有声明构造方法,该程序能正确执行吗? 为什么?

完成对类对象的初始化,可以执行,会自动调无参构造

22.构造方法特性

  • 方法名和类名相同
  • 没有参数但不能用void
  • 无需调用,生成类对象自动执行

23.静态方法和实例方法

1.调用静态方法,可以用类名.方法名,也可以对象名.方法名,实例方法只有后者,调用静态方法无需创建对象

2.静态方法访问本类成员,只访问(静态成员变量静态方法),实例方法无限制

24.对象和对象引用的相等

对象的相等——内存存放内容是否相等

引用相等——内存地址是否相等

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号