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
字符串:
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; }
当你调用 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(); //注意:要给出初始值 }
c、访问权限,接口啊接口,就是为了给别人用的,记得无论你写与不写,所有的一切都是public
1 public interface MyInterface { 2 static final String name = "test"; //默认给你加上public的,放心哥们 3 void walk(); //抽象方法也同理,隐式的有public的哦 4 void jump(); 5 abstract void fly();
d、接口可以继承一个接口,想不到吧,接口可以继承(扩展)多个、多个、多个(重要的事说三遍)接口。
1 public interface MyInterface extends FirInterface, SecInterface, ThirdInterface{ 2 static final String name = "test"; 3 void jump(); 4 abstract void fly();
原文地址:https://www.cnblogs.com/swfzzz/p/11776472.html
- Asp.Net4.0/VS2010新变化(5):可扩展的(分布式)缓存
- Pandas对行情数据的预处理
- 上市公司*ST华泽官网打不开,域名已被挂出售卖
- Asp.Net4.0/VS2010新变化(4):SEO的改进
- Pandas DataFrame笔记
- 让控件填满整个页面
- 用多个类别来进行微调
- Asp.Net4.0/VS2010新变化(2):网站自动预热
- Asp.Net4.0/VS2010新变化(1):web.config与publish
- 任天堂将推出Nintendo Labo 域名保护意识墙
- 表格效果
- ROR学习笔记(2):Asp.Net开发者看ROR
- 图片的javascript延时加载
- 全世界最短IE判定if(!+[1,])的解释
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 不要在Spring单元测试中使用 @Transactional注解
- OpenCV DNN模块官方教程(一)加载Caffe模型做图像分类
- Python爬虫之mongodb的聚合操作
- Linux中文输入法-搜狗输入法安装方法
- oracle 数据库问题:"ORA-01922: 必须指定 CASCADE 以删除...",原因及解决办法
- OpenCV DNN模块官方教程(二)YoloV4目标检测实例
- Python爬虫之mongodb的增删改查
- 恕我直言你可能真的不会java第2篇:Java Stream API?
- Python爬虫之mongodb的简单使用
- Java之美-死锁
- 恕我直言你可能真的不会java第4篇:Stream管道流Map操作
- 高工也要补基础,wait,notify,join
- 恕我直言你可能真的不会java第5篇:Stream的状态与并行操作
- 恕我直言你可能真的不会java第3篇:Stream的Filter与谓词逻辑
- 恕我直言你可能真的不会java第1篇:lambda表达式会用了么?