JAVA SE 总结

但是,有一点需要注意的是,在方法的重载中只是根据参数类型或个数来区分的,与返回值是否相同无关

 

数组操作相关的方法:java.util.Arrays.sort(数组名称)、System.arraycopy()数组拷贝

 

每一个对象拥有各自的内存空间,所以不会互相影响,而且可以发现一点,每一个对象中实际上保存的只是属性,

并没有保存方法,因为所有的方法都是每个对象所共同拥有的,保存在全局代码区之中。

栈内存保存的是对堆内存的引用地址,而堆内存中保存的是每一个对象所拥有的属性,

而全局代码区之中保存的是所有类中的方法,表示公共调用。

 

构造方法的定义:在一个类中定义的方法名称与类名称相同,且无返回值声明的方法,称为构造方法。

但是,在一个类中如果没有明确的定义一个构造方法的话,则会自动生成一个无参的,什么都不做的构造方法。

 

两种比较的区别:==和equals()

    ==:用于数值比较,比较的是两个字符串的地址值

    equals():用于内容的比较,比较两个字符串的内容是否相等

 

个字符串肯定是保存在堆内存之中的,所以一旦一个字符串声明之后,则无法改变。

 

public class StringDemo08 {

    public static voidmain(String args[]){

         String str ="hello" ;

         str = str + "world" ;

         str += "!!!" ;

         System.out.println(str);

    }

};

 

通过内存图可以发现一点,每一个字符串的内容原本并没有发生任何的改变,

改变的是只一个字符串的内存地址的指向,而且操作完成之后会发现有很多的垃圾产生,

所以,以后对于频繁修改字符串的代码应该尽可能的回避,所以以下的代码是极其垃圾的:

public class StringDemo09 {

    public static voidmain(String args[]){

         String str ="hello" ;

         for(intx=0;x<10000;x++){

               str += x ;

         }

         System.out.println(str);

    }

};

 

字符串串中的 mail.indexValue("@")==-1则mail中不存在 @的符号!

如果现在在一个类中调用了本类的方法的话,可以使用“this.方法()”,

但是对于方法的调用,使用this也可以调用类中的构造方法,但是只局限于在一个构造方法中调用其他构造方法的形式。

this()调用本类中无参构造!

 

如果使用this调用本类中其他构造方法的话,则此语句必须放在构造方法的首行

 

个类中如果有多个构造方法的话,则肯定保留有一个是不用this调用其他构造的情况,以作为出口”。

 

字符串的内容无法改变,改变的只是内存地址的指向。

 

//对象之间的比较使用compare 比较的是地址相等

public boolean compare(Person person){

         if(this == person){  // 地址相等了

               return true ;

         }

         if(this.name.equals(person.name)&& this.age==person.age){

               return true ;

         } else {

               return false ;

         }

    }

 

 

 

static本身声明方法或声明属性,但是在方法的访问上本身也存在着问题。

         1、 使用static声明的方法,不能访问非static的操作(属性或方法)

         2、 非static声明的方法,可以访问static声明的属性或方法

 

         1、 如果说现在一个类中的属性或方法都是非static类型的,肯定是要有实例化对象才可以调用。

         2、 static声明的属性或方法可以通过类名称访问,可以在没有实例化对象的情况下调用。

 

 

在程序中使用“{}”括起来的一段代码就称为代码块,根据代码块出现的位置或声明的关键字的不同,分为四种:

         普通代码块:在一个方法中定义的代码块,称为普通代码块

         •构造块:在一个类中定义的代码块

               构造块会优先于构造方法执行,而且每当一个新的实例化对象产生时,都会调用构造块,会调用多次

         静态块:使用static关键字声明的代码块

               在主类中定义的静态块将优先于主方法执行,而且可以发现静态块优先于构造块执行,而且只执行一次

         • 同步代码块:留到线程再讲

    从实际的开发来看,代码块的使用并不多

一个在方法中定义的内部类,依然可以访问外部类中的属性,但是对于方法的参数,这个内部类是无法直接访问的,如果要访问,则在参数前面必须使用final关键字进行声

class Outer {

       private String info = "hello" ;

       public void fun(final int x){

              final int y = 100 ;

              class Inner {   // 方法中声明内部类

                     public void print(){

                            System.out.println(info);

                            System.out.println("x= " + x) ;

                            System.out.println("y= " + y) ;

                     }

              };

              new Inner().print() ;

       }

};

public classInnerDemo06 {

       public static void main(String args[]){

              new Outer().fun(30) ;

       }

};

重载及覆写的区别

No.

区别点

重载

覆写

1

定义

方法名称相同,参数的类型或个数不同

方法名称、参数的类型或个数、返回值相同

2

权限

没有权限要求

被覆写的方法不能拥有比父类更严格的权限

3

范围

发生在一个类之中

发生在继承关系中

4

单词

OverLoading

Override

 

 

this与super的区别

No.

区别点

this

super

1

使用

调用本类中的属性或方法

从子类调用父类中的属性或方法

2

构造

可以调用本类构造,且有一个构造要作为出口

从子类调用父类的构造方法,不管子类如何安排最终一定会去调用,默认调用的是父类中的无参构造方法

3

要求

调用构造的时候一定要放在构造方法首行

放在子类构造方法首行

使用super和this调用构造方法的语句是不可能同时出现的

4

特殊

表示当前对象

无此概念

 

抽象类的定义比较简单,包含一个抽象方法的类就是抽象类,抽象类必须使用abstract关键字进行声明。

      抽象方法:只声明而未定义方法体的方法称为抽象方法,抽象方法也必须使用abstract关键字声明。

1、     抽象类不能直接实例化。

2、     抽象类必须有子类,子类(如果不是抽象类)的话,则必须覆写抽象类中的全部抽象方法。

3、     如果一个抽象类中没有任何一个抽象方法,依然是抽象类

1、     抽象类能使用final声明吗?

         · 不能:final声明的类不能被继承,而抽象类又必须要有子类。

2、     抽象类中能有构造方法吗?

         · 可以存在,而且依然符合于子类对象的实例化过程的要求

抽象类和普通类相比,只是增加了抽象abstractclass的声明,和增加了抽象方法而已。

 

1、  方法的重载及覆写

2、  对象多态性:指的是父类对象和子类对象之间的转型操作

              · 向上转型(子类 à 父类):父类名称 父类对象 = 子类实例 ;     ,自动完成

            · 向下转型(父类à 子类):子类名称 子类对象 = (子类名称)父类实例 ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值