// 练习一: 写出程序结果
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 之综合练习的更多相关文章

  1. java设计模式综合项目实战视频教程

    java设计模式综合项目实战视频教程 视频课程目录如下: 第01节课:本课程整体内容介绍:X-gen系统概况,包括:引入.X-gen项目背景.X-gen的HelloWorld第02节课:X-gen整体 ...

  2. Java集合类综合

    Java集合类是JDK学习中的一个经典切入点,也是让初学者最初感受到Java魅力的地方之一,你一定不会忘记不需要关心大小的ArrayList,不用自己实现的Queue,和随处可见的HashMap.面试 ...

  3. JavaSE学习总结(十九)—— Java Web 综合应用(JSP、Servlet、IDEA、MySQL、JUnit、AJAX、JSON)

    一.使用Servlet+JDBC+MySQL+IDEA实现商品管理 1.1.创建项目 打开IntelliJ IDEA开发工具.点击Create New Project创建一个新的Web项目 选择Jav ...

  4. 【JAVA正则表达式综合练习】

    一.治疗口吃. 将字符串“我我我我我我我..........我.......要要要要要..................要要要要...学习习习习.......习习习习习习习习编程程程程程程..... ...

  5. 【转载】JAVA中综合接口和抽象类实现的一种“抽象接口”

    Muscleape个人总结:(这里的抽象接口是指:使用一个抽象类实现一个接口,是两部分结构) 使用一个抽象类直接实现接口,将接口中的方法区分为实现类必须要实现的和选择性实现的,其他需要实现接口的类型通 ...

  6. java 内省综合案例和Beanutils工具包

    演示用eclipse自动生成 ReflectPoint类的setter和getter方法. 直接new一个PropertyDescriptor对象的方式来让大家了解JavaBean API的价值,先用 ...

  7. java web综合案例

    1.采用的技术: bootstrap+jsp+servlet+三层架构(servlet,service,dao)+mysql 注意:mysql使用的是5.5版本,使用高版本会有很多问题.可以将5.5版 ...

  8. Java基础学习笔记二十八 管家婆综合项目

    本项目为JAVA基础综合项目,主要包括: 熟练View层.Service层.Dao层之间的方法相互调用操作.熟练dbutils操作数据库表完成增删改查. 项目功能分析 查询账务 多条件组合查询账务 添 ...

  9. 【Java】集合综合案例 - 播放器管理

    集合综合案例 文章目录 集合综合案例 需求分析 项目演示 详细设计 代码实现 歌曲类 播放器类 播放列表类 测试 参考资料 播放器管理 需求分析 项目演示 详细设计 代码实现 重新搞一波 复习巩固 简 ...

随机推荐

  1. [Jobdu] 题目1337:寻找最长合法括号序列

    题目描述: 给你一个长度为N的,由’(‘和’)’组成的括号序列,你能找出这个序列中最长的合法括号子序列么?合法括号序列的含义便是,在这个序列中,所有的左括号都有唯一的右括号匹配:所有的右括号都有唯一的 ...

  2. 点滴积累【JS】---JS小功能(JS实现隐藏显示侧边栏,也就是分享栏的隐藏显示)

    效果: 思路: 首先,利用计时器setInterval实现DIV的隐藏显示功能,然后在进行一个判断,之后在把要移动的相应距离进行一个参数传递,再根据参数判断出移动的方向也就是offsetLeft移动的 ...

  3. codility上的问题(34) Fluorum 2014

    好久没写codility的题了.一来没时间,二来有的题目不太好分析.这个题比較有意思,我还没有给出很严格的证明.

  4. Unity中差乘判断目标是否在左边或右边

    使用差乘判断左右一般是比较差乘的y,小于0是左,大于0是右.特殊情况可以用其他分量来比较 默认情况: var cross = Vector3.Cross(lhsObject.transform.pos ...

  5. Atitit.md5 实现原理

    Atitit.md5 实现原理 1. 算法流程图2 2. MD5算法过程:2 2.1. 3. 处理分组数据3 3. MD5加密字符串实例5 4. Md5的历史7 4.1.1. MD27 4.1.2. ...

  6. atitit.项目设计模式---ioc attilax总结

    atitit.项目设计模式---ioc attilax总结 1. .IOC的之前 1 2. ioc后的实现 1 3. 认识引入IOC框架的缺点, 2 4. 自己实现ioc 3 4.1. ioc框架的实 ...

  7. 1.2.2 Loaders - 加载器

    Loaders从Android 3.0引入,它使得在activity或是fragment里进行异步数据加载变得非常简单.Loaders有如下的特性: 它在每个 Activity  和 Fragment ...

  8. The Definitive Guide To Django 2 学习笔记(三) URLconfs 和松耦合

    前面的例子体现了一个设计模式中的重要思想,松耦合. 不论我们是将/time/改成/current_time/,还是新建一个/another-time-page/同样指向views.py中的 curre ...

  9. django 模板报错

    "Requested setting TEMPLATE_DEBUG, but settings are not configured. You must either define the ...

  10. Mybatis热加载Mapper.xml

    开发的时候,写Mybatis Mapper.xml文件的时候,每次修改SQL都需要重启服务,感觉十分麻烦,于是尝试写了一个Mybatis的Mapper.xml热加载. 能在修改Mapper.xml之后 ...