Java 之综合练习
// 练习一: 写出程序结果
interface A{}
class B implements A
{
public String func()
{
return "func";
}
}
class Demo
{
public static void main (String[] args)
{
A a = new B();
System.out.println(a.func()); //多态, 对于非静态方法, 编译看左边,运行看右边
// 编译失败, 因为 a 所属的 A 接口中没有定义 func 方法
}
}
// 练习二: 写出程序结果
class Fu
{
boolean show(char a)
{
System.out.println(a);
return true;
}
}
class Demo extends Fu
{
public static void main(String[] args)
{
int i = 0;
Fu f = new Demo();
Demo d = new Demo();
for(f.show('A'); f.show('B')&&(i<2); f.show('C')) // 条件为假, for 循环不运行
{
i++;
d.show('D');
}
}
boolean show(char a)
{
System.out.println(a);
return false;
}
}
// 结果: A B
// 练习三: 写出程序结果
interface A{}
class B implements A
{
public String test()
{
return "yes";
}
}
class Demo
{
static A get()
{
return new B();
}
public static void main(String[] args)
{
A a = get(); // 相当于 A a = new B();
System.out.println(a.test()); // 编译失败, A 接口中没有定义 test() 方法
}
}
// 练习四: 写出程序结果
class Super
{
int i = 0;
public Super(String a) // 带参数构造函数
{
System.out.println("A");
i = 1;
}
public Super() // 空参数构造函数
{
System.out.println("B");
i += 2;
}
}
class Demo extends Super
{
public Demo(String s) // 带参数构造函数
{
System.out.println("C");
i += 5; // 子类中没有定义 i, 直接访问父类的 i
}
public static void main(String[] args)
{
int i = 4;
Super d = new Demo("A");
System.out.println(d.i);
}
}
// 输出结果: B C 7
// 练习五: 补足代码, 调用两个函数, 要求用匿名内部类
interface Inter
{
void show(int a, int b);
void func();
}
class Demo
{
public static void main(String[] args)
{
// 补足代码, 调用两个函数, 要求用匿名内部类
Inter in = new Inter()
{
public viod show(int a, int b)
{}
public void func()
{}
}; // 多态
in.show(3,4);
in.func();
}
}
// 练习六: 写出错误答案错误的原因, 用单行注释的方式
class Demo
{
int show(int a, int b){return 0;}
}
下面哪些函数可以存在于 Demo 的子类中
A. public int show(int a, int b){return 0;} // 可以, 函数覆盖
B. private int show(int a, int b){return 0;} // 不可以, 权限不够
C. private int show(int a, long b){return 0;} // 可以, 子类特有方法
D. public short show(int a, int b){return 0;} // 不可以, 调用的不确定性
E. static int show(int a, int b){return 0;} // 不可以, 静态只能覆盖静态
// 练习七:
interface A
{
void show();
}
interface B
{
void add(int a, int b);
}
class C implements A,B
{
// 程序代码
private int x, y;
public void add(int x, int y)
{
this.x = x; // 将局部变量x, y 存储到堆内存中
this.y = y;
}
public void show()
{
System.out.println(this.x + this.y); //调用堆内存中的变量
}
}
class D
{
public static void main(String[] args)
{
C c = new C();
c.add(4,2);
c.show(); // 通过该函数打印以上两个数的和
}
}
// 练习八: 写出程序结果
class Demo
{
public static void main(String[] args)
{
try
{
showExe();
System.out.println("A");
}
catch(Exception e)
{
System.out.println("B");
}
finally
{
System.out.println("C");
}
System.out.println("D"); // 异常已经被解决, 最后肯定会输出 D
}
public static void showExe()throws Exception
{
throw new Exception();
}
}
// 结果: B C D
// 练习九: 写出程序结果
class Super
{
int i = 0;
public Super(String s)
{
i = 1;
}
}
class Demo extends Super
{
public Demo(String s)
{
i = 2;
}
public static void main(String[] args)
{
Demo d = new Demo("yes"); // 父类中没有空参数构造函数, 编译失败
System.out.println(d.i);
}
}
class Super
{
int i = 0;
public Super()
{
i = 1;
}
public Super(String s)
{
i = 1;
}
}
class Demo extends Super
{
public Demo(String s)
{
i = 2;
}
public static void main(String[] args)
{
Super d = new Demo("yes");
System.out.println(d.i); //此时,结果为 2
}
}
// 练习十: 写出程序结果
class Demo
{
public static void func()
{
try
{
throw new Exception();
System.out.println("A"); // 该条语句无法被执行, 废话! 编译失败
}
catch(Exception e)
{
System.out.println("B");
}
}
public static void main(String[] args)
{
try
{
func();
}
catch(Exception e)
{
System.out.println("C");
}
System.out.println("D");
}
}
// 练习十一:
class Demo
{
public void func()
{
// 位置一
}
class Inner{}
public static void main(String[] args)
{
Demo d = new Demo();
// 位置二
}
}
A. 在位置1 写 new Inner(); // 可以
B. 在位置2 写 new Inner(); // 不可以, 因为主函数是静态的, 只能调用静态成员, 所以内部类也必须是 static 的
C. 在位置2 写 new d.Inner(); // new new Demo().Inner(); 格式错误, 正确格式: new Demo().new Inner();
D. 在位置2 写 new Demo.Inner(); // 格式正确, 但是 Inner 必须是静态的.
// 练习十二: 写出程序结果
class Test
{
public static String output="";
public static void foo(int i)
{
try
{
if(i==1)
throw new Exception();
output += "1";
}
catch(Exception e)
{
output += "2";
return;
}
finally
{
output += "3";
}
output += "4";
}
public static void main(String[] args)
{
foo(0);
System.out.println(output); // 134 , 注意是字符串
foo(1);
System.out.println(output); // 13423, output 是静态全局变量
}
}
_参考资料_
- [JavaSE 基础视频](https://www.bilibili.com/video/av3101108/#page=5)
Java 之综合练习的更多相关文章
- java设计模式综合项目实战视频教程
java设计模式综合项目实战视频教程 视频课程目录如下: 第01节课:本课程整体内容介绍:X-gen系统概况,包括:引入.X-gen项目背景.X-gen的HelloWorld第02节课:X-gen整体 ...
- Java集合类综合
Java集合类是JDK学习中的一个经典切入点,也是让初学者最初感受到Java魅力的地方之一,你一定不会忘记不需要关心大小的ArrayList,不用自己实现的Queue,和随处可见的HashMap.面试 ...
- JavaSE学习总结(十九)—— Java Web 综合应用(JSP、Servlet、IDEA、MySQL、JUnit、AJAX、JSON)
一.使用Servlet+JDBC+MySQL+IDEA实现商品管理 1.1.创建项目 打开IntelliJ IDEA开发工具.点击Create New Project创建一个新的Web项目 选择Jav ...
- 【JAVA正则表达式综合练习】
一.治疗口吃. 将字符串“我我我我我我我..........我.......要要要要要..................要要要要...学习习习习.......习习习习习习习习编程程程程程程..... ...
- 【转载】JAVA中综合接口和抽象类实现的一种“抽象接口”
Muscleape个人总结:(这里的抽象接口是指:使用一个抽象类实现一个接口,是两部分结构) 使用一个抽象类直接实现接口,将接口中的方法区分为实现类必须要实现的和选择性实现的,其他需要实现接口的类型通 ...
- java 内省综合案例和Beanutils工具包
演示用eclipse自动生成 ReflectPoint类的setter和getter方法. 直接new一个PropertyDescriptor对象的方式来让大家了解JavaBean API的价值,先用 ...
- java web综合案例
1.采用的技术: bootstrap+jsp+servlet+三层架构(servlet,service,dao)+mysql 注意:mysql使用的是5.5版本,使用高版本会有很多问题.可以将5.5版 ...
- Java基础学习笔记二十八 管家婆综合项目
本项目为JAVA基础综合项目,主要包括: 熟练View层.Service层.Dao层之间的方法相互调用操作.熟练dbutils操作数据库表完成增删改查. 项目功能分析 查询账务 多条件组合查询账务 添 ...
- 【Java】集合综合案例 - 播放器管理
集合综合案例 文章目录 集合综合案例 需求分析 项目演示 详细设计 代码实现 歌曲类 播放器类 播放列表类 测试 参考资料 播放器管理 需求分析 项目演示 详细设计 代码实现 重新搞一波 复习巩固 简 ...
随机推荐
- 纯CSS3实现一个旋转的3D立方体盒子
简单介绍 上网易前端微专业课程,里面有一个课外作业是实现一个3D旋转立方体.花了点时间做了下.还有点意思.写个简单教程.供大家学习. 先放上终于要实现的效果 注:代码在chrome 43.0.2357 ...
- WCF基础教程——vs2013创建wcf应用程序
引言 近期在项目中见到了师哥们常常谈到的WCF这方面的知识.当时在写程序的时候也没有理解wcf究竟是个什么东西? 以及我们为什么在项目中会採用这种框架来实现,仅仅是依照师哥他们写好的代码编写同样格 ...
- 180508 - 解决有关VIVO的2018-04-01安全补丁导致的APP闪退问题
解决有关VIVO的2018-04-01安全补丁导致的APP闪退问题 [√]问题原因猜测4: 最终解决方案 [√]问题原因猜测3: 尝试解决 [√成功] [×]问题原因猜测2: 尝试解决 [×失败] [ ...
- Unix删除当前目录可执行文件
On GNU versions of find you can use -executable: find . -type f -executable -printFor BSD versions o ...
- 用Doxygen+Graphviz生成函数调用流程图(转)
源文链接: http://wildpointer.net/2012/04/14/doxygen_graphviz/ 上面这张图是用Doxygen+Graphviz从netcat的源代码生成的函数调用关 ...
- hdu 4771 Stealing Harry Potter's Precious (2013亚洲区杭州现场赛)(搜索 bfs + dfs) 带权值的路径
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4771 题目意思:'@' 表示的是起点,'#' 表示的是障碍物不能通过,'.' 表示的是路能通过的: ...
- 李洪强iOS经典面试题32-简单介绍 ARC 以及 ARC 实现的原理
李洪强iOS经典面试题32-简单介绍 ARC 以及 ARC 实现的原理 问题 简单介绍 ARC 以及 ARC 实现的原理. 考查点 ARC 是苹果在 WWDC 2011 提出来的技术,因此很多新入行的 ...
- layui进度条bug
对于动态及生成的进度条,在渲染时候要使用element.init();element.init();element.progress('demo', percent+'%');
- java中for循环执行过程
for (int j = 0; j < newSize; j++) { //执行todo } 1.首先变量j初始化为0 2.然后j=0的值跟newSize进行比较,假如为true,则执行{}里面 ...
- svn还原文件中去掉已经删除的文件
1.到svn目录下,选择文件并提交 2.在弹出的对话窗口中,选择文件并右击,找到"解决" 3.再次点击"还原"的时候,已经删除的文件就没有了.