都不能。
静态方法不能被重写,因为重写实现的是运行时的多态,是依赖于对象的,而静态方法是依赖于类的;我们的抽象方法需要被重写,故抽象方法不能是
静态的。
本地方法是由本地代码(如C)实现的,而抽象方法是没有实现的,相互矛盾。
synchronized和方法的实现细节相关,而抽象方法不涉及实现细节,相互矛盾。
区别:
静态变量随着字节码的加载而加载,而实例变量随着实例的创建而创建静态变量属于一个类,而实例变量属于一个对象静态变量直接通过类名进行引用,而实例变量通过对象进行引用区别:
==是运算符,而equals是方法==在比较基本数据类型时比较的是值,而对于引用数据类型则比较的是地址值equals用于比较两个对象的内容是否相等,如果没有重写equals方法,则比较的是地址值相同点:
二者都是用于控制循环语句的执行不同点:
break用于完全结束循环,执行循环体之后的代码continue用于跳过本轮循环,进入下一轮循环中的内容到底变了没有?
没有。因为String被设计为一个不可变类,也就是说它的对象都是不可变对象,那为什么输出的s会是Hello World!,因为在内存中创建了
一个新的内容为"Hello World!"的String对象,而我们的s则指向了这个新的String对象。由此可见,如果我们经常进行“修改”的话,必将造成很大的
内存消耗,所以如果要经常修改字符串,建议使用StringBuffer。
除此之外,如果我们一定要使用String的话,建议使用下面的方式创建:
String s="abc"; 而不建议使用下面的方式:
String s=new String("abc");因为String是不可变对象,并且在new的时候需要消耗内存。
