java编程思想 第四版 第六章 个人练习
欢迎加群:239063848
进群须知:本群仅用于技术分享与交流。问题公布与解答
禁止闲聊、非诚勿扰
练习1:(1)在某个包中创建一个类,在这个类所处的包的外部创建该类的一个实例。
import mil.oms.main.test.Test;
public class MainTest {
public static void main(String args[]){
Test test=new Test();
}
/**
执行结果
Test()实例化……
*/
}
package mil.oms.main.test;
public class Test{
public Test(){
System.out.println("Test()实例化……");
}
}
练习2:(1)将本节中的代码片段改写为完整的程序,并校验实际所发生的冲突。
import mil.oms.main.test.Vector;
import java.util.*; public class MainTest { public static void main(String args[]){
Vector vector=new Vector();
java.util.Vector vector1=new java.util.Vector();
}
}
package mil.oms.main.test;
public class Vector{
public Vector(){
System.out.println("Vector()实例化……");
}
}
练习3:(1)创建两个包:debug和debugoff,他们都包括一个同样的类,该类有一个debug()方法,第一个版本号显示发送给控制台的String參数,而第二版本号什么也不做,使用静态import语句将该类导入到一个測试程序中,并示范条件编译效果。
import debug.Test;
public class MainTest {
public static void main(String args[]){
Test t=new Test();
t.debug();
}
/**
* 执行结果
Test()……
*/
}
package debug;
public class Test{
public void debug(){
System.out.println("Test()……");
}
}
package debugoff;
public class Test{
public void debug(){
}
}
练习4:(2)展示protected方法具有包訪问权限。可是它仍旧不是public的。
package debug;
public class MainTest {
public static void main(String args[]){
Test t=new Test();
t.debug();
}
}
package debug;
public class Test{
protected void debug(){
System.out.println("Test()……");
}
}
练习5:(2)创建一个带有public,private。protected和包訪问权限域以及方法成员的类。创建一个该类的一个对象。看看在你试图调用全部类成员时,会得到什么类型的编译信息。
请注意,处于同一个文件夹中的全部类都是默认包的一部分
package debug;
public class MainTest {
public static void main(String args[]){
Test t=new Test();
//System.out.println(t.str1);
System.out.println(t.str2);
System.out.println(t.str3);
//t.debug1();
t.debug2();
t.debug3();
/**
* 输出
value2
value3
debug2()……
debug3()……
*/
}
}
package debug;
public class Test{
private String str1="value1";
protected String str2="value2";
public String str3="value3";
private void debug1(){
System.out.println("debug1()……");
}
protected void debug2(){
System.out.println("debug2()……");
}
public void debug3(){
System.out.println("debug3()……");
}
}
练习6:(1)创建一个带有protected数据的类,运用在第一个类中处理protected数据的方法在同样的文件里创建第二个类。
package debug;
public class MainTest {
public static void main(String args[]){
Test t=new Test();
System.out.println(t.str2);
/**
* 输出
value2
*/
}
}
package debug;
public class Test{
protected String str2="value2";
}
练习7:依据描写叙述access和Widget的代码片段创建类库。在某个不属于access类库的类中创建一个Widget实例
package access.local;
import access.debug.Widget;;
public class Test {
public static void main(String args[]){
new Widget();
}
}
package access.debug;
public class Widget {
public Widget(){
System.out.println("Widget!");
}
}
练习8:效仿实例Lunch.java的形式,创建一个名为ConnectionManager的类,该类管理一个元素为Connection对象的固定数组。client程序猿不能直接创建Connection对象,而仅仅能通过ConnectionManager中的某个static方法来获取他们。当ConnectionManager之中不再有对象时,它会返回null引用。在main()之中检測这些类。
package test;
import java.util.Arrays;
public class ConnectionManager {
public static Connection [] cons=new Connection[5];
static {
System.out.println("----------初始化Connection对象----");
for(int i=0;i<5;i++){
cons[i]=Connection.makeConnection();
}
}
public static Connection getConnection(){
int l=cons.length;
if(l>0){
Connection con=cons[--l];
cons=Arrays.copyOf(cons, l);
return con;
}else{
return null;
}
}
public static void main(String args[]){
try {
for(int i=0;i<7;i++){
Connection con=ConnectionManager.getConnection();
System.out.println(i+"、"+con);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 打印结果:
----------初始化Connection对象----
0、test.Connection@527c6768
1、test.Connection@527c6768
2、test.Connection@527c6768
3、test.Connection@527c6768
4、test.Connection@527c6768
5、null
6、null
*/
}
class Connection{
private static Connection connection=new Connection();
private Connection(){
}
public static Connection makeConnection(){
return connection;
}
}
练习9:(2)在access/local文件夹下编写下面文件(假定access/local文件夹在你的CLASSPATH中):
package test.access.foreign;
public class Foreign {
public static void main(String args[]){
PackagedClass PackagedClass=new PackagedClass();//因为此类仅仅有包訪问权限,编译未通过
}
/**
* 打印结果:
*/
}
package test.access.local;
public class Foreign {
public static void main(String args[]){
PackagedClass PackagedClass=new PackagedClass();//在同一个包中,可正确引用
}
/**
* 打印结果:
*/
}
class PackagedClass{
public PackagedClass(){
}
}
java编程思想 第四版 第六章 个人练习的更多相关文章
- java编程思想第四版第六章习题
(略) (略) 创建两个包:debug和debugoff,他们都包含一个相同的类,该类有一个debug()方法,第一个版本显示发送给控制台的String参数,而第二版本什么也不做,使用静态import ...
- java编程思想第四版第六章总结
1. 代码重构 为什么f要代码重构 第一次代码不一定是完美的, 总会发现更优雅的写法. 代码重构需要考虑的问题 类库的修改不会破坏客户端程序员的代码. 源程序方便扩展和优化 2. 包 创建一个独一无二 ...
- java编程思想第四版第十一章习题
第一题 package net.mindview.holding.test1; import java.util.ArrayList; import java.util.List; /** * 沙鼠 ...
- Java编程思想第四版*第七章*个人练习
欢迎加群:239063848 成团的笔记:该组仅用于技术共享和交流,问题和答案公布 潘基聊天.禁止广告.禁止招聘-- 练习1:(2)创建一个简单的类.第二个类中,将一个引用定义为第一个类的对象.运用惰 ...
- java编程思想第四版第十三章字符串 习题
fas 第二题 package net.mindview.strings; import java.util.ArrayList; import java.util.List; /** * 无限循环 ...
- java编程思想第四版第五章习题
创建一个类, 它包含一个未初始化的String引用.验证该引用被Java初始化成了null package net.mindview.initialization; public class Test ...
- java编程思想第四版第十三章字符串 总结
1. String和StringBulider的使用 通过书中介绍, 我们得知如下结论: 当使用+连接符将字符串进行拼接的时候, 编译器会进行自动优化为使用StringBuilder连接字符串. 当在 ...
- java编程思想第四版第十一章总结
1. 容器类被分为两类:Collection和Map Collection是一个接口:包括: List接口: ArrayList:按照被插入顺序保存元素, 查询快, 增删改慢 LinkedList:按 ...
- java编程思想第四版第七章习题
(略) (略) (略) (略) 创建两个带有默认构造器(空参数列表)的类A和类B.从A中继承产生一个名为C的新,并在C内创建一个B类的成员.不要给C编写构造器.创建一个C类的对象并观察其结果. pac ...
随机推荐
- 保存全局Crash报告&发送邮件
上篇写到,将程序中没有处理到的crash信息保存到本地文件夹下.但是实际的情况是,你不可能总是将用户的设备拿过来.所以一般性的处理是,将crash reports发送到服务器或者邮箱.所以针对上篇的代 ...
- Codeforces Round #353 (Div. 2) B. Restoring Painting 水题
B. Restoring Painting 题目连接: http://www.codeforces.com/contest/675/problem/B Description Vasya works ...
- leetcode660. Remove 9
leetcode660. Remove 9 题意: 从整数1开始,删除任何包含9的整数,如9,19,29 ... 所以现在,你将有一个新的整数序列:1,2,3,4,5,6,7,8,10,11,... ...
- 读书笔记_Effective_C++_条款三十五:考虑virtual函数以外的其他选择
举书上的例子,考虑一个virtual函数的应用实例: class GameCharacter { private: int BaseHealth; public: virtual int GetHea ...
- angular 自定义指令参数详解【转】【个人收藏用】
restrict:指令在dom中的声明形式 E(元素)A(属性)C(类名)M(注释) priority优先级:一个元素上存在两个指令,来决定那个指令被优先执行 terminal:true或false, ...
- Linux服务器压测/拷机软件收集
最近公司采购了一批服务器,于是收集了一些拷机软件来压测服务器硬件性能.硬件的稳定相对来说比较重要,7x24小时无间断运行,主要看三个硬件:CPU.内存.硬盘. 下面是收集的一些教程,可能网址已经失效了 ...
- 在IIS上部署基于django WEB框架的python网站应用
django是一款基于python语言的WEB开源框架,本文给出了如何将基于django写的python网站部署到window的IIS上. 笔者的运行环境: Window xp sp3 IIS 5.1 ...
- 关于myBatis的问题There is no getter for property named 'USER_NAME' in 'class com.bky.model.实例类'
现在流行的 ssm(spring + struts2 + myBatis) 持久层的mybatis是需要配置映射器的,找了个demo连接的数据库是MySQL 于是就修改了一下弄成了连接Oracle的 ...
- AutoCAD二次开发——AutoCAD.NET API开发环境搭建
AutoCAD二次开发工具:1986年AutoLisp,1989年ADS,1990年DCL,1993年ADS-RX,1995年ObjectARX,1996年Active X Automation(CO ...
- MySQL数据库事务各隔离级别加锁情况--read committed && MVCC(转)
本文转自https://m.imooc.com/article/details?article_id=17290 感谢作者 上篇记录了我对MySQL 事务 隔离级别read uncommitted的理 ...