Java题集
来源:互联网 发布:金融网络聊天技巧 编辑:程序博客网 时间:2024/06/07 08:48
Java题集
第一题
以下代码的输出结果
public class Base { private String basename = "base"; public Base() { callName(); } public void callName() { System.out.println(basename); } static class Sub extends Base { private String basename = "sub"; public void callName() { System.out.println(basename); } } public static void main(String[] args) { Base b = new Sub(); System.out.println(b); }}
解析:
+ Base b = new Sub();
+ Base b =
直接忽略,从 new Sub();
开始
+ 类加载器加载 Base,Sub 类到jvm;
+ 为Base,Sub 类中的两个属性baseName 分配存储空间,但是不初始化;注意:属性的初始化时放在构造器中,按照代码顺序执行的。
+ new Sub()
会调用Sub的无参构造器,而在这个构造器中会隐式调用父类Base的无参构造器;
+ 父类Base的构造器中代码本质是
public Base() {
baseName = “base”;
callName();
}
即父类的属性baseName 的值为base。但为何输出null?
+ 因为父类构造器方法是在子类中调用的,即大环境是子类。此时,调用的方法callName()
当然是指子类的方法。而这个方法打印的属性baseName 当然也是子类的。那现在子类的属性baseName的值是多少呢?答案是null.因为此时子类Sub的构造器内代码本质是:
super();
baseName=”sub”;
此时baseName="sub"
还没执行。因此,最后的值当然是null。
第二题
编写一段代码,将一个正整数N用二进制表示并转换为一个String类型的值s
public class Base { /** * 十进制转二进制: * ①整数值除以2取余,逆向排序 * ②小数值乘以2取整,顺向排序 */ public static String toBinaryString(long n) { String s = ""; for(long i = n; i > 0; i /= 2) { s = (i % 2) + s; } return s; } public static void main(String[] args) { System.out.println(toBinaryString(4)); //等同于 System.out.println(Long.toBinaryString(4)); }}
0 0
- Java题集
- java题集
- JAVA题集(1)---EJB
- java题集1
- java题集2
- java题集3
- java
- JAVA
- JAVA
- JAVA
- java
- Java
- Java
- JAVA:
- java
- java
- java
- java
- Android之Service(二):服务的基本用法
- Kafka0.10.0.0单节点-多代理集群
- 纯虚函数能为private吗?
- 一些C/C++中的函数
- leetcode 32. Longest Valid Parentheses
- Java题集
- net-snmp中载入第三方mib库
- 导入数据库
- 递归算法学习之斐波拉契
- 顺时针输入二维数组问题
- View的滑动冲突
- jQuery属性选择器选择动态变量
- android studio导入其他项目工程报错解决方法
- unity 鼠标拖拽物品