Java学习总结(不断更新中)

1. 面向对象(OO)开发 由   面向对象分析(OOA)   面向对象设计(OOD)   面向对象编程(OOP)三部分组成。


2.递归一定要向已知方向递归!!

例子:

f(0)=1  f(1)=4 …..f(n+2)=2f(n+1)+f(n),要求f(10)

代码应写为:

public int f(n){

    if( n == 0 ){

        return 1;

    }

    else if( n == 1){

        return 4;

    }

    else{

        return 2*f(n-1) + f(n-2);

    }

}


如果已知f(20)= 1 f(21)=4 ……..f(n+2)=2f(n+1)+f(n),要求f(10)

代码应写为:

public int f(n){

    if( n == 20 ){

        return 1;

    }

    else if( n == 21){

        return 4;

    }

    else{

        return f(n+2) - 2*f(n+1);

    }

}


3. this 和 super 不能用在static 的方法中。


4.多态          java中引用变量有两个类型,一个是编译类型,一个是运行时的类型 

相同类型的变量,执行同一个方法时呈现不同的行为特征。这就是多态。

例子:  有一个父类叫BaseClass 有一个子类叫SubClass,继承自BaseClass. 子类覆盖了父类中的一个test方法。声明变量的时候这么写: BaseClass temp = new SubClass();  这个时候调用temp的test方法,此时表现出的行为就是子类里重载后的行为,而不是父类中原来的行为。

个人认为:出现多态的根源是JAVA允许将子类对象直接赋给一个父类的引用变量。

这种情况下如果temp变量执行一个只有子类才有的方法,就会编译错误。因为temp的编译类型是BaseClass,编译无法调用子类里的方法。

如果一定要调用子类里的方法,就要使用引用变量的强制类型转换。

引用变量的强制类型转换只能将编译类型时父类,运行类型时子类的变量转换成子类类型。不能用于两个无关的引用变量类型。

instanceof 运算符可以在强制类型转换前判断一个对象是否为后一个类的实例。


引用变量来访问其包含的实例属性时,系统总是访问其编译时类所定义的属性,而不是运行时类所定义的属性。


5. 基本数据类型的包装类

这些包装类有个静态方法,可以把字符串转换成对应的基本类型parseXXX() ,反之,String类里也提供了valueOf()的方法实现了反向的功能。

例如

String aaa = "123";

int a = Integer.parseInt(aaa);

反向

int a = 1234;

String aaa = a.valueOf(a);


6.object类的toString() 方法

toString()方法是一个自我描述的方法。总是返回对象实现类的 类名+@+hashCode,可以在重写toString()方法来实现自己想要的返回。


7. == 来判断两个变量是否相等。还有 equals()方法

如果两个都是基本变量类型,且都是数值型(不一定要求数据类型严格相同),只要变量的值相等就会返回true

如果两个是引用类型的变量,必须指向同一个对象的时候,== 才会返回true.


equals()方法是object类提供的一个实例方法。大致和==相似,当变量是引用类型的时候也需要指向同一个对象才能返回true。但是java中String的equals()方法已经重写了,只要两个字符串包含的字符序列相同就能返回true。

equals()的好处是它可以按照自己想要的相等标准被重写。


8. 单例类

首先,构造函数被隐藏了(private)

然后,需要一个static的方法来构造类(这个方法里调用了隐藏起来的构造方法)

最后,需要一个static的属性来缓存构造出来的类实例,下次再创建时返还第一次创建的类实例。

例子:

class Singleton{

    private static Singleton  instance;

    private Singleton();

    public static Singleton getInstance(){

        if(instance == null){

            instance = new Singleton();

        }

        return instance;

    }

}


9.final 修饰符  被修饰的变量获得初始值后不能被重新赋值。

final修饰成员变量的时候:

类属性:可在静态初始化中、声明该属性时指定初始值。

实例属性:可在非静态初始化、声明该属性、构造器中指定初始值。


final修饰基本类型变量和引用类型变量的区别:

修饰基本类型变量时,不能对变量重新赋值,因此基本类型变量不能被改变。

修饰引用类型变量时,变量保存的仅仅时一个引用,final只保证这个引用的地址不会改变,即一直引用一个对象,而对象完全可以发生改变。


final修饰的方法不能被重写,但可以被重载(就是传入参数不一样)


10. abstract 修饰抽象类和抽象方法,不能和final、static、private同时使用

接口比抽象类更抽象,接口只包含抽象方法。












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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值