Java-易错疏漏点

一、字符串相等问题:

1.两个值相同的String类变量相等:

String a = "abc";

String b = "abc";

System.out.println(a == b);

结果:true

2.通过拼接得到的String类变量,即使值相同也不相等:

String a = "ab";

String b = "c";

String c = "abc";

System.out.println((a+b) == c);

结果:false

 

二、print控制台输出的特殊情况:

1.数字+数字+字符(串)输出

System.out.println(100+5+"c");

结果:105c

数字相加在开头系统会自动相加

2.字符(串)+数字+数字输出

System.out.println("c"+100+5);

结果:c1005

数字相加不为开头时系统不会自动相加

 

三、重写(Override)和重载(Overload)的区别

重写是父类与子类的多态表现,重载是一个类的多态表现。

1.重写(Override):

重写是发生在继承之中,子类对于父类方法进行重写(参数列表不变,只对函数体进行修改)。

同时重写方法所抛出的异常必须是父类异常的子类。如:父类为IOException异常,子类所抛出的异常只能为IOException异常的子类不能为Exception。

子类重写方法的访问权限不能低于父类,如父类为public,子类不能为protected。

用final声明的方法不能被重写

用static声明的方法不能被重写但是可以被再次声明

子类父类在同一个包中时,子类可以对父类中所有除了private和final修饰的方法进行重写

不在同一个包中时,子类只能对父类中的public和protected修饰的非final方法进行重写

只有继承了的方法才能被重写

构造函数不能被重写

 

2.重载(Overload)

同一个类中,方法名相同参数列表不同,返回值可以相同也可以不同,访问修饰符可以不同。每一个重载方法都必须有不同的参数列表。

四、多态

优点:

  • 1. 消除类型之间的耦合关系
  • 2. 可替换性
  • 3. 可扩充性
  • 4. 接口性
  • 5. 灵活性
  • 6. 简化性

1.重写(Override)

父类引用指向子类对象(Parent p = new Child();)父类对象可以通过子类的构造函数进行初始化,该对象可以调用子类所重写过的函数。(没有被重写的方法,父类引用调用时会报错)

2.虚函数

Java 中其实没有虚函数的概念,它的普通函数就相当于 C++ 的虚函数,动态绑定是Java的默认行为。如果 Java 中不希望某个函数具有虚函数特性,可以加上 final 关键字变成非虚函数

3.接口

通过interface来声明接口,之后通过implement来声明实现类来实现接口。(实现类必须实现接口的所有方法,一个实现类可以实现多个接口

4.抽象类

通过abstract关键字来声明,含有抽象函数的类一定是抽象类,抽象类不一定含有抽象函数。抽象类不能直接实例化,只能通过非抽象子类(必须实现抽象类中的所有抽象方法)来实例化。非抽象子类通过extends来继承抽象类。抽象方法不能有方法体,同时构造函数和静态函数不能被定义成抽象函数

五、枚举

关键字enum,枚举和类一样可以有自己的方法、变量,其中构造函数只能用private修饰。枚举类可以包含抽象方法,每个实例都必须实现所有的抽象方法。

六、包

Java中类和接口都是存放在包(package)。每一个java源文件中(.java文件):package在第一个,import在第二个,类定义在最后同一个包中的类不需要通过import引用,需要引用不同包中的类时添加import。通过定义JAVA_HOME和CLASSPATH来设置.java(源代码)和.class(字节码)文件的位置(可以不一样)。

七、Java中的数据结构

  • 枚举(Enumeration)
  • 位集合(BitSet)
  • 向量(Vector)
  • 栈(Stack)
  • 字典(Dictionary)
  • 哈希表(Hashtable)
  • 属性(Properties)

1.枚举(Enumeration)

(vector 实现了List接口,数据结构是数组但是支持线程同步,是线程安全的。)

Enumeration elements()方法:返回list中值的枚举 如:Enumeration e = (HashTable/Vector) list.elements();

boolean hasMoreElements()方法:如果枚举中还有多个元素返回true,反之返回false 如:boolean flag = (Enumeration) e.hasmoreElements();

Object nextElements()方法:如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素。

2.位集合(BitSet)

八、输出格式

System.out.printf(format,element,...):该方法可以控制输出的格式,比起println来的更加高级。
format:该参数控制输出的格式:""中可以添加想要的格式如"(%d,%d)"。数据控制符以%开头,以字母结尾(代表数据类型)d:整型,f:浮点型(.2f)表示精确到小数点后2位,s:String类型

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值