Java基础

数据类型

java基本数据类型: byte、short、int、long、float、double、char、boolean

java数据类型包装类: Byte、Short、Integer、Long、Float、Double、Character、Boolean

引用类型:数组、枚举、class、interface

不能被继承的类:Long、Short、Float、Double、Class、Void、Math、String

可被继承的类:Thread、ClassLoader、Number、Calendar

装箱:基本数据类型→包装类
拆箱:包装类→基本数据类型

面向对象特性

  • 封装:隐藏属性和实现细节,仅对外提供访问方式。
    • 优点:将变化隔离,便于使用,提高可重用性、安全性
  • 继承:是给对象提供从基类获取字段和方法的能力,继承提供了代码的重用性,也可以在不修改类的情况下,给现存的类添加新特征性。
    • 优点:提高了代码的复用性,让类与类之间产生了关系,提供了一个特征多态的前提。
  • 多态:同一个行为具有多个不同表现形式和形态的能力。
    • 优点:提高了系统的拓展性。
  • 抽象:抽象是把想法从具体的实例中分离出来的步骤。
    • 优点:把类的行为和实现细节分离开。

接口和抽象类

  • 接口:接口是对外提供规则、功能的拓展。
    • 优点:接口的出现降低了耦合性。

接口和抽象类的共性

  1. 都是不断向上抽取的结果。
  2. 都不能被实例化,都可以通过继承实现其抽象方法。
  3. 都是面向抽象编程的技术基础,实现了诸多的设计模式。

接口和抽象类的区别

  1. 接口支持多重实现,抽象类只支持单继承。
  2. 接口中都是抽象方法,抽象类也可以有抽象方法,也可以有方法体方法。
  3. 接口中不能有构造器,抽象类中可以有构造器。
  4. 接口中没有main()不可运行;抽象类中有mian()可以运行。
  5. 接口可以作用于值类型和引用类型,抽象类只能作用于引用类型。
  6. 接口使用时like a关系,抽象类使用的的是is a关系。
  7. 接口中的成员修饰是固定的都为public,抽象类的成员修饰可以自定义。

面向过程和面向对象

  • 面向过程:
    • 优点:性能比面向对象效率高,因为类调用时需要实例化,开销比较大,比较耗费资源,如:单片机,嵌入式开发,Linux/Unix等一般采用面向过程开发,性能是最重要的。
    • 缺点:没有面向对象易维护、易复用、易扩展。
  • 面向对象:
    • 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态的特性,可以设计出低耦合的系统,使系统更加的灵活,更加的利于维护。
    • 缺点:性能比面向过程低。

static(静态)

  1. 可以修饰成员变量和成员方法,但不能修饰类以及构造方法。
  2. 被static修饰成员变量和成员方法,独立于该类的任何对象,他不依赖与特定的实例,被类的所有实例共享。
  3. static变量和static方法一般是通过类型直接访问,但也可用过类的实例来访问。

final(最终的)

  1. 用于声明属性、方法、类,分别标识属性不可变,方法不可覆盖,类不可继承。
  2. 可用于修饰成员变量、非抽象类、非抽象类的成员方法以及方法参数。
  3. final方法:不能被子类的方法重写,但可以继承。
  4. final类:标识该类不能被继承,没有子类,final类中的方法也无法被继承。
  5. final变量:表示常量只能赋值一次,赋值后不能被修改。
  6. final不能用于修饰构造方法。
  7. final参数只能使用该参数,不能修改该参数的值。
    注:static和final可用时使用,abstract不能和final一起使用

final、finally、finalize的区别?

  1. 一个类声明成final,它意味着不能再派生出新的子类,不能作为父类被继承。
  2. finally在异常处理时提供finally块来执行任何清除操作,如果抛出异常,那么相匹配的catch字句会执行,然后就会进入到finally块(如果存在),finally块会在return前执行。
  3. finalize方法名,使用此方法在垃圾收集器将对象从内存中清除出去之前做的必要的清理工作。

类和对象的关系

类是拥有相同行为特征对象的一个抽象概念,而对象是类这个抽象概念中事实存在的个体。

String和StringBuild和StringBuffer的区别

  1. String和StringBuffer是线程安全,StringBuild是非线程安全。
  2. String是不可变的看,因为String是非final所修饰的,所以是不可变得
  3. STringBuild和StringBuffer都继承AbstractStringBuilder类,在AbstractStringBuild类中使用的也是字符 数组保存字符串char[] value,但是没有final类关键字修饰,所以这两种对象都可变。
  4. 操作量少的数据=String
  5. 单线程操作字符串缓冲区下操作大量数据=StringBuild
  6. 多线程操作字符串缓冲区下操作大量数据=StringBuffer

Collection(接口)和Collections(类)区别?

  • collections是java.util下的类,它包含有各种有关集合操作的静态方法。
  • collection是java.util下的接口,他是各种集合结构的父接口。

Overload(重载)和Overriding(重写)?

  • 重载是一个类中多态性的表现,如果在一个类中定义了多个同名的方法,他们或有参数的个数不同或有不同的参数类型或顺序不同,方法的返回值和访问修饰符也可不同,发生在编译时。
  • 重写是父类与子类之间多态性的一种表现,如果在子类中定义某方法与其父类有相同的名称。

==和equals

  • ==:他的作用是判断两个兑现过得地址是不是相等。即判断两个对象是不是同一个对象。基本数类型比较的是值,引用数据类型比较是内存地址。
  • equals:他的作用是判断两个对象是否相等,但是他一般有两种使用情况。
    • 情况1:类没有覆盖equals方法,则通过equals()比较该类的两个对象时,等价于“==”,比较这两个对象。
    • 情况2:类覆盖了equals方法,比较两个对象的内容是否相等,若他们的内容相等,则返回true。

throws和throw的区别

  • throws:用来声明一个成员方法可以抛出的各种非运行异常情况。
  • throw:用来明确抛出一个异常情况。

异常处理try-catch-finally

  • try块:用用于捕获异常,其后可以接零个或多个catch块,如果没有catch块,则必须要跟一个finally块。
  • catch块:用来处理try捕获到的异常。
  • finally块:无论是否捕获或异常处理,finally块里面的语句都会被执行,当在try块或者catch块中遇到了return语句时,finally语句块在方法返回前执行。
  • 以下四种特殊情况,finally不会被执行
    • 在finally语句块中发生了异常。
    • 在前面的代码中用了system.exit()退出程序。
    • 程序所在的线程死亡。
    • 关闭CPU。

字节流和字符流的区别

  • 字节流:以stream结尾的,读写按字节读写,只是读写文件内容无关的,一般选用字节流。
  • 字符流:reader和writer结尾的,读写文件需要对内容按行进行处理的时候,一般选用字符流。

java变成语言只由什么传递参数?

只由值传递参数,当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用,对象的内容可以在被调用的方法中改变,但对象的引用永远不会变的。

break、return、continue的区别

  • break:用于完全结束一个循环,跳出循环体。
  • continue:只是中止本次循环,接着开始下一次循环。
  • return:直接结束一个方法。

(String)、toString()、String.valueOf()的区别

  • (String):将Object转化弄成String类型的值,需要注意的是,类型必须是能转成String类型的。例如:Integer类型就不行,否则会抛出ClassCastException(类型不兼容)。
  • toString():java.lang.Object类已有public方法,.toString(),通常派生类会覆盖Object里面的toString()所以对任何java对象都可以调用此方法。注:必须保证Object不是nulll值,否则会抛出空指针异常。
  • String.valueOf():弥补了前两者的不足,以.toString()方法我基础。注意:当转换null时,得使用String.valueOf((Object)null),而不是String.valueOf(null)会报出空指针异常。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值