一些琐碎的java知识点

来源:互联网 发布:淘宝游戏店铺转让 编辑:程序博客网 时间:2024/05/16 04:46
1.print与println的区别:

println在输出后会换行显示,而print输出后不会换行。

2.成员变量与局部变量的区别:

   成员变量: 类中定义的,描述它有什么;作用域在整个类中都是可见,java中给成员变量一个初始值
   局部变量:方法中定义,在方法中临时保存数据;作用域仅限于他的方法,java中不会给局部变量一个初始值, 在一个方法中不允许有同名局部变量,在多个方法中允许有同名局部变量两类变量同名是,布局变量具有更高优先级;

3.构造方法

 当没有指定构造方法是,系统会自动添加午餐的构造方法
 当有指定的构造方,无论是有参、午餐的构造方法,都不会自动添加无参的构造方法。

4.静态方法和非静态方法

(1)静态方法中可以直接调用同类中的静态成员,但不能调用非静态变量。
(2)如果希望在静态方法在调用非静态变量,可通过创建类的对象,然后通过对象来访问非静态变量。
(3)在普通成员方法中,则可以直接访问同类的非静态变量和静态变量。
(4)静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。

5.封装

(1)概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
(2)好处:
  a.只能通过规定的方法访问数据
  b.隐藏类的细节,方便修改和实现

6.系统中的包:

java.(功能).(类)
java.lang.(类)包含java语言基础的类
java.util.(类)包含java语言中各种工具
java.io.(类)包含输入、输出相关功能的类

7.继承  

  子类可以继承父类的所有属性和方法,但不可以用private修饰,实现代码的复用。

继承的初始化顺序

 初始化父类再初始子类
 先执行初始化对象中属性,再执行构造方法中的初始化

8.final关键字

 fianal可以修饰类、方法
 final修饰类,则该类不允许被继承
 final修饰方法,则该方法不允许被覆盖(重写)
 final修饰属性,则该类的属性不会进行隐式的初始化(类的初始化属性必须有值)或在构造方法中赋值(但只能选其一)
  final修饰变量,则该变量的值只能赋一次值,即变为常量

9.super 的应用

   子类的构造的过程当中必须调用其父类的构造方法
   如果子类构造方法中既没显示调用父类的构造方法,而父类又没有无参的构造方法,就会编译出错

10. 所有的类没有明确标识 继承与哪个类, 那么它默认继承Object类;

11. equal()方法
   比较的对象的引用是否只想同一块内存地址;重写后可以比较两个对象的属性
   默认继承Object的toString()方法,输出对象地址,如果重写的话可以输出对象的属性

12. 多态

   引用多态:
    父类的引用可以指向本类的对象
    父类的引用可以指向子类的对象
     方法多态:
   创建本类对象时,调用的方法为本类方法
   创建子类对象时,调用的方法为子类重写的方法或继承的方法

13.引用类型转换

  (1)向上类型转换(隐式/自动类型转换),是小类型转换为大类型【无风险】
  (2)向下类型转换(强制类型转换),是大类型转换为小类型【有风险】
   (3)instanceof运算符,来解决引用对象的类型,减免类型转换的安全性问题
      if(A  instanceof B)表示如果A中含有B的元素,这样就可以进行强制类型转换

14.抽象类

概念:抽象类前使用abstract关键字修饰,则该类为抽象类
应用场景:
 (1)在某些情况下,某个父类只知道其子类应该包含怎么的方法,但无法准确知道这些子类如何实现这些方法
 (2)从多个具有相同特征的类中抽象出一个抽象类,以抽象类作为子类的模板,从而避免了子类设计的随意性

 使用规则: 

(1)abstract定义抽象类

(2)abstract定义抽象方法,只声明,不需实现

(3)包含抽象方法的类是抽象类

(4)抽象类中可以包含普通方法,也可以没有抽象方法

(5)抽象类不能直接创建,可以定义引用变量抽象方法没有方法体以分号结束;

15.接口

概念:接口可以理解为一种特殊类,由全局常量和公共的抽象方法组成
    类是一种具体实现体 ,接口定义一批类的所需的规范,不关心这些类的内部数据,也不关心方法的实现细       节,只规定必须提供的某些方法 
    接口中方法不能有方法体
定义: 不再使用class 使用interface关键字

基本语法: [修饰符]interface 接口名[extends 父接口1,父接口2....]{
  零个到多个常量定义。。
  零个到多个抽象方法定义。。。
 }
接口是用来被继承、被实现,修饰符一般建议用public

注意: 不能用private和protectd修饰接口

补充:
   匿名内部类没有类名,也没有什么定义类的过程,匿名内部类有的只是类的作用,即重写接口的抽象函数这个效果。

语法格式:

Interface i=new Interface(){

    public void method(){
     System.out.print("匿名内部类实现接口的方式……");}}
        //即通过创建接口的对象,直接写出实现的方法,再调用此方法
    还可以直接创建并调用方法,如:
     new IPlay(){
        public void playGame(){
       System.out.println("……");}}.playGame();

使用接口:
 一个接口可以继承多个父接口,同样的一个类也可以实现多个接口,实现接口时使用implements关键字,因为一个类只能够继承一个父类不够灵活,所以可以通过实现多个接口来做补充。

继承父类实现接口的语法:
 [修饰符] class 类名 extends 父类 implements 接口1,接口2……{类体部分}
//如果继承的是抽象类,需要实现继承的抽象方法;要实现接口中的抽象

方法
   如果要继承父类,继承父类必须在实现接口之前
   接口命名时首字母为I,以区分类名。可通过add继承父接口

16.异常

   异常总类: Throwable
                         Throwable
                       ↙       ↘
                     Error        Exception
                    ↙  ↘        ↙     ↘
                VMError   Threaddeath
              虚拟机错误    线程死锁 
                   终结者

  

 处理异常:
 try-catch以及try-catch-finally
   try-catch 以及try-catch-finally
          try{
          //会抛出异常的方法
          }catch(Exception e){
           //处理该异常的代码块
           }...(n 个catch块)...{
            }finally{
           //最终将要执行的一些代码
           }
           多重catch语句块书写原则:先小后大,先子类后父类
            finally{}中一般处理收尾工作,例如文件和数据库的关闭
     异常抛出:
   Java中的异常抛出
   throw——将产生的异常抛出(动作)
   throws——声明将要抛出何种类型的异常(声明)
          public void 方法名(参数列表)throws 异常列表{
                //调用会抛出异常的方法或者:
                throw new Exception();  
          }
     自定义异常
       class 自定义异常类 extends 异常类型{
       //构造器
       public 自定义异常类(String message){
       super();//继承父类的构造方法
       }
      }
  实际应用中处理异常:
  1、处理运行时异常时,采用逻辑去合理规避同时辅助try-catch处理
  2、在多重catch块后面,可以加一个catch(Exception)来处理可能会被遗漏的

异常  
  3 .对于不确定的代码,也可以加上try-catch,处理潜在的异常
  4、尽量去处理异常,切记只是简单的调用printStackTrace()去打印
  5、具体如何处理异常,要根据不同的业务需求和异常类型去决定
  6、尽量添加finally语句块去释放占用的资源

17.String 类的常用方法

 int length()                           返回当前字符串的长度
 int indexOf(int ch)                     查找ch字符在该字符串中第一次出现的位置
 int indexOf(String str)                  查找str子字符串在该字符串中第一次出现的位置
 int lastIndexOf(String str)               查找str子字符串在该字符串中最后一次出现的位置
 int lastIndexOf(int ch)                  查找ch字符在该字符串中最后一次出现的位置
 String substring(int beginIndex)            获取从beginIndex位置开始到结束的子字符串
 String substring(int beginIndex,int endIndex)   获取从beginIndex位置开始到endIndex的子字符串
 String trim()                         返回去除了前后空格的字符串
 boolean equals(Object obj)                该字符串与指定对象比较,返回true或false
 String toLowerCase()                    将字符串转换为小写
 String toUpperCase ()                   将字符串转换为大写
 char charAt ()                        获取字符串中指定位置的字符
 String[] spilt spilt(String regex,int limit)  将字符串分割为子字符串,返回字符串数组
 byte [] getBytes()                     将该字符串转换为byte数组

需要频繁对字符串进行修改操作时使用 StringBuilder 的效率比 String 要高
原创粉丝点击