Java基础篇--1

时间:2019-11-01
本文章向大家介绍Java基础篇--1,主要包括Java基础篇--1使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1、抽象的(Abstrect)方法是否能同时是static?
           abstract修饰是为了子类重写的,而static修饰的方法不能被重写,所以不存在这样的情况。

  一个类继承抽象类,必须实现所有抽象方法,否则他还是抽象类

2、静态方法(static method)能否访问非静态方法?
           静态方法只能访问静态成员变量,非静态方法的调用必须创建对象。
3、static可否用来修饰局部变量?
      NO
4、内部类与静态内部类的区别?

          静态内部类相对与外部类是独立存在的,在静态内部类中无法直接访问外部类中变量、方法。如果要访问的话,必须要new一个外部类的对象,使用new出来的对象来访问。但是可以直接访问静态的变量、调用静态的方法;

    普通内部类作为外部类一个成员而存在,在普通内部类中可以直接访问外部类属性,调用外部类的方法。如果外部类要访问内部类的属性或者调用内部类的方法,必须要创建一个内部类的对象,使用该对象访问属性或者调用方法。

  如果其他的类要访问普通内部类的属性或者调用普通内部类的方法,必须要在外部类中创建一个普通内部类的对象作为一个属性,外同类可以通过该属性调用普通内部类的方法或者访问普通内部类的属性如果其他的类要访问静态内部类的属性或者调用静态内部类的方法,直接创建一个静态内部类对象即可。

5、Java中是否可以覆盖(override) 一个private或者是static的方法?

             Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。/6、switch?

6、default位置:
不加break
switch(value) value类型?jdk版本不同,一些实现不同
7、Integer
缓存:
public static final Class<Integer> TYPE = Class.getPrimitiveClass("int");//获取基本数据类型的class
Integer 类将 [-128-127] 这256个数字实例化了,也就是说用 Integer 来实例化其中某个数都是直接调用缓存中的实例,创建的多个实例都是同一个。

 1 nteger h1 = new Integer(12);
 2 Integer h2 = new Integer(12);
 3 System.out.println(h1==h2); //false 注:生成新的
 4 
 5 Integer int1 = Integer.valueOf("100");
 6 Integer int2 = Integer.valueOf("100");
 7 System.out.println(int1 == int2); // return true
 8 在-128到127之间调用jvm缓存的数据
 9 Integer int11 = 100;
10 Integer int21 = 100;
11 System.out.println(int11 == int21); // return true
12 
13 Integer int12 =new Integer(100);
14 int int22 = 100;
15 System.out.println(int12 == int22); // return true
View Code

字符串:
String s ="ddd";
System.out.println(s instanceof String);//true

8、返回值区分重载?

只要编译器可以根据语境明确判断语义,那么的确可以区分重载方法。不过,有时候你并不关心方法的返回值,你想要的是方法调用的其他效果(为了副作用而调用),这时你可能会调用方法而忽略其返回值。
这时Java如何判断该调用哪个重载方法?别人该如何理解这种代码?因此根据方法的返回值来区分重载方法是行不通的
-- 摘自Java编程思想
比如有2个方法,

1  void f(List list) { }
2 int f(List list) { return 1; }
View Code

当你调用 int f(List list) 方法时,只是需要方法对list进行处理,但是并不需要返回值。因此在调用的时候,就会直接写成 f(List list); 而不会写成 int i = f(List list)。

这时编译器发现有 2个f(List list) ,无法知道你到底调用的哪个。别人看你写的代码时,也不好知道你调用的哪个方法。

9、接口:

接口的含义理解:接口可以理解成统一的"协议",而接口中的属性也属于协议中的内容;但是接口的属性都是公共的,静态的,最终的
接口的成员特点:
A:成员变量 只能是常量。默认修饰符 public static final
B:成员方法 只能是抽象方法。默认修饰符 public abstract
//所以接口定义属性可以这么写:

public interface People {
int age=10;
String name="输出名字";//接口里面定义的成员变量都是 public static final修饰
public void eat();  //注意:要给出初始值
}
View Code

c、访问权限,接口啊接口,就是为了给别人用的,记得无论你写与不写,所有的一切都是public

1 public interface MyInterface {
2 static final String name = "test"; //默认给你加上public的,放心哥们
3 void walk(); //抽象方法也同理,隐式的有public的哦
4 void jump();
5 abstract void fly();
View Code

d、接口可以继承一个接口,想不到吧,接口可以继承(扩展)多个、多个、多个(重要的事说三遍)接口。

1 public interface MyInterface extends FirInterface, SecInterface, ThirdInterface{
2 static final String name = "test";
3 void jump();
4 abstract void fly();
View Code

原文地址:https://www.cnblogs.com/swfzzz/p/11776472.html