关键词:
练习3:(1)创建一个带默认构造器(即无參构造器)的类。在构造器中打印一条消息。为这个类创建一个对象。P116
public class Test{ public Test(){ System.out.println("Hello Word"); } public static void main(String[] args) { new Test(); } /** * 执行结果 Hello Word */ }
练习4:(1)为前一个练习中的类加入一个重载构造器,令其接受一个字符參数。并在构造器中把你自己的信息和接受的參数一起打印出来。
public class Test{ public Test(String msg){ System.out.println("Hello "+msg); } public static void main(String[] args) { new Test("China"); } /** * 执行结果 Hello China */ }
练习5:(2)创建一个名为Dog的类,它具有重载的bark()方法。此方法应依据不同的基本数据类型进行重载。并依据被调用的版本号。打印出不同类型的狗吠(barking)、咆哮(howling)等信息,编写main()来调用全部不同版本号的方法。
public class Dog{ public void bark(){ System.out.println("barking"); } public void bark(String name){ System.out.println(name + " howing"); } public static void main(String[] args) { Dog dog=new Dog(); dog.bark(); dog.bark("Lily"); } /** * 执行结果 barking Lily howing */ }
练习6:(1)改动前一个练习的程序,让两个重载方法各自接受两个类型的不同的參数,但二者顺序相反。验证其是否工作。
public class Dog{ public void bark(int i){ System.out.println(i+"barking"); } public void bark(String name){ System.out.println(name + " howing"); } public static void main(String[] args) { Dog dog=new Dog(); dog.bark("Lily"); dog.bark(88); } /** * 执行结果 Lily howing 88barking */ }
练习7:(1)创建一个没有构造器的类。并在main()中创建其对象,用以验证编译器是否真的自己主动增加了默认构造器。
public class Dog{ public void bark(int i){ System.out.println(i+"barking"); } public void bark(String name){ System.out.println(name + " howing"); } public static void main(String[] args) { Dog dog=new Dog(); dog.bark("Lily"); dog.bark(88); } /** * 执行结果 Lily howing 88barking */ }
练习8:(1)编写具有两个方法的类,在第一个方法内调用第二个方法两次:第一次调用时不使用thiskeyword。第二次调用时使用thiskeyword-- * 这里仅仅是为了验证它是起作用的,你不应该在实践中使用这样的方法。
public class Test{ public static void main(String[] args) { Apple apple=new Apple(); apple.getApple(); } /** * 执行结果 未使用this调用:已创建好…… 使用this调用:已创建好…… */ } class Apple{ public void getApple(){ System.out.print("未使用this调用:"); createApple(); System.out.print("使用this调用:"); this.createApple(); } public void createApple(){ System.out.println("已创建好……"); } }
练习9:(1)编写两个(重载)构造器的类,并在第一个构造器中,通过this调用第二个构造器。
package mil.oms.main.test; public class Test{ public static void main(String[] args) { new Apple(); } /** * 执行结果 颜色:red */ } class Apple{ public Apple(){ this("red"); } public Apple(String color){ System.out.println("颜色:"+color); } }
练习10:(2)编写具有finalize()方法的类,并在方法中打印消息。在main()中为该类创建一个对象,试解释这个程序的行为。
public class Test{ public static void main(String[] args) { Apple apple=new Apple(); apple=null; System.gc(); } /** * 执行结果 <span style="font-family: Arial, Helvetica, sans-serif;">----finalize---------</span> */ } class Apple{ protected void finalize(){ System.out.println("----finalize---------"); } }
练习11:(4)改动前一个练习的程序,让你的finalize()总会被调用。
public class Test{ public static void main(String[] args) { new Apple(); System.gc(); System.runFinalization(); } /** * 执行结果 颜色:red */ } class Apple{ protected void finalize(){ System.out.println("----finalize---------"); } }
练习12:(4)编写名为Tank的类。此类的状态能够是“满的”或“空的”。
其终结条件是:对象被清理时必须处于空状态。 * 请编写finalize()以检验终结条件是否成立。在main()中測试Tank可能发生的几种使用方式
public class Tank{ public boolean state=false; public void changeState(boolean state){ this.state=state; } protected void finalize() throws Throwable{ if(state){ System.out.println("----满的,有问题---------"); throw new Throwable ("状态不为空!"); }else{ System.out.println("----空的,没问题---------"); super.finalize(); } } public static void main(String[] args) { new Tank(); System.gc(); System.runFinalization(); new Tank().changeState(true); System.gc(); System.runFinalization(); } /** * 执行结果 ----空的,没问题--------- ----满的,有问题--------- */ }
练习13:(1)验证前面段落中的语句
public class ExpliciStatic{ public static void main(String[] args) { System.out.println("Inside main()"); Cups.cup1.f1(1); } static Cups cups1=new Cups(); static Cups cups2=new Cups(); /** * 执行结果 Bowl(1) Bowl(2) Cups() Cups() Inside main() f1(1) */ } class Cup{ Cup(int mark){ System.out.println("Bowl("+mark+")"); } void f1(int mark){ System.out.println("f1("+mark+")"); } } class Cups{ static Cup cup1; static Cup cup2; static{ cup1=new Cup(1); cup2=new Cup(2); } Cups(){ System.out.println("Cups()"); } }
练习14:(1)编写一个类。拥有两个静态字符串域。当中一个在定义处初始化,还有一个在静态块中初始化。如今,增加一个静态方法用以打印出两个字段值。
请证明它们都会在被使用之前完毕初始化动作。
public class ExpliciStatic{ public static void main(String[] args) { Cup.print(); } /** * 执行结果 str1:str1 str2:str2 */ } class Cup{ static String str1="str1"; static String str2; static{ str2="str2"; } static void print(){ System.out.println("str1:"+str1); System.out.println("str2:"+str2); } }
练习15:(1)编写一个含有字符串域的类,并採用实例初始化方式进行初始化。
public class ExpliciStatic{ public static void main(String[] args) { System.out.println("start()"); new Cup(); System.out.println("end()"); } /** * 执行结果 start() 字段串域初始化完毕 Cup() end() */ } class Cup{ String str; { str="Hello"; System.out.println("字段串域初始化完毕"); } Cup(){ System.out.println("Cup()"); } }
练习16创建一个String对象数据,并为每个元素都赋值一个String。用for循环来打印该数组。
public class ExpliciStatic{ public static void main(String[] args) { String[] strs={"H","e","l","l","o"}; for(String str:strs){ System.out.print(str); } } /** * 执行结果 Hello */ }
练习17:创建一个类,他有一个接受一个String參数的构造器。
在构造阶段,打印该參数。创建一个该类的对象引用数组。可是不实际去创建对象赋值给该数组。
当执行程序时。请注意来自对该构造器的调用中的初始化消息是否打印了出
public class ExpliciStatic{ public static void main(String[] args) { Random random=new Random(47); Cup[] cups=new Cup[random.nextInt(10)]; } /** * 执行结果 */ } class Cup{ Cup(String str){ System.out.println("Cup("+str+")"); } }
练习18:通过创建对象赋值给引用数组,从而完毕前一个练习。
public class ExpliciStatic{ public static void main(String[] args) { Random random=new Random(47); Cup[] cups=new Cup[random.nextInt(10)]; for(int i=0,j=cups.length;i<j;i++){ cups[i]=new Cup("cup"+i); } } /** * 执行结果 Cup(cup0) Cup(cup1) Cup(cup2) Cup(cup3) Cup(cup4) Cup(cup5) Cup(cup6) Cup(cup7) */ } class Cup{ Cup(String str){ System.out.println("Cup("+str+")"); } }
练习19:(1)写一个类,他接受一个可变參数的String数组,验证你能够向该方法传递一个用逗号分隔的String列表。或是一个String[]。
<pre name="code" class="html">public class ExpliciStatic{ public static void main(String[] args) { String str="Hello",strs[]={str}; System.out.print("传 入 字 符 串 :"); new Cup(str); System.out.print("传入字符串数组:"); new Cup(strs); System.out.print("传入两个字符串:"); new Cup(str,str); } /** * 执行结果: 传 入 字 符 串 :可变。。。參数 传入字符串数组:可变。。。參数 传入两个字符串:可变。。
。參数 */ } class Cup{ Cup(String ... str){ System.out.println("可变。。。參数"); } }
练习20:(1)创建一个使用可变參数列表而不是普通的main()语法的main()。
打印所产生的args数组的全部元素,并用各种不同数量的命令行參数来測试它。
public class ExpliciStatic{ public static void main (String... args){ printStr("H","e","l","l","o"); printStr( new String[] {"H","e","l","l","o",}/** 最后的逗号可有可无 **/ ); } /** * 执行结果: Hello Hello */ public static void printStr(String ... strs){ for(String str:strs){ System.out.print(str); } System.out.println(); } }
练习21:创建一个enum,它包括纸币中最小面值的6种类型。通过values()循环并打印每个值及其ordinal()
public class ExpliciStatic{ public static void main (String args[]){ for(Money m:Money.values()){ System.out.println(m+" "+m.ordinal()); } } /** * 执行结果: one 0 two 1 five 2 ten 3 hun 4 tho 5 */ } enum Money{ one,two,five,ten,hun,tho }
练习22:(2)在前面的样例中,为enum写一个switch语句,对于每个case,输出该特定货币的描写叙述。
public class ExpliciStatic{ public static void main (String args[]){ for(Money m:Money.values()){ System.out.println(m+" "+m.ordinal()); Money.describe(m); } } /** * 执行结果: one 0 1分钱 two 1 2分钱 five 2 5分钱 ten 3 10块钱 hun 4 20块钱 tho 5 50块钱 */ } enum Money{ one,two,five,ten,hun,tho; static void describe(Money m){ switch(m){ case one: System.out.println("1分钱");break; case two: System.out.println("2分钱");break; case five: System.out.println("5分钱");break; case ten: System.out.println("10块钱");break; case hun: System.out.println("20块钱");break; case tho: System.out.println("50块钱");break; default:break; } } }
『java编程思想-第四版』第二章:一切都是对象
Java编程思想-第四版学习总结,此为第二章:一切都是对象.packagecom.w3cjava.second;@SuppressWarnings("all")publicclassSecond{/***Java编程思想(第四版)*第2章一切都是对象*@paramargs*/publicstaticvoidmain(String[]args){/***2.1用引用操作对象*遥控器(引用)操... 查看详情
一起读《java编程思想》(第四版)
实习期间利用空余时间看《Java编程思想》(第四版)这本书,遇到不懂的知识点就记录在本博客内。 1.5复用具体实现Java代码复用的三种常见方式:继承、组合、代理。1、继承:使用extends关键字在基类的基础上创建新类,... 查看详情
《java编程思想》读书笔记第五章
成员初始化 Java尽力保证:所有变量在使用前都能得到恰当的初始化。 对于方法的局部变量,Java会以编译时报错的形式贯彻这种保证,比如:1voidf()2{3inti;//这里编译时就会报错,未初始化4} 但是如果是类的数据成员... 查看详情
java编程思想第四版读书笔记——第十三章字符串
Java编程思想第四版读书笔记——第十三章字符串字符串的操作是计算机程序设计中最常见的行为。关键词:StringBuilder,StringBuffer,toString(),format转换,正则表达式,1、不可变StringString对象时不可变的。每当把String对象作... 查看详情
java编程思想第五章初始化与清理上
休整几天,闲了蛋疼也没写文章,这开学了坚持每天写// 必须的天天写。不敢再松懈了。羡慕一好朋友能坚持的静下心来学习。 5.1 用构造器确保初始化 在Java中,通过提供构造器,... 查看详情
html(第四本书第五章参考)
上机1<!DOCTYPEhtml><html><headlang="en"><metacharset="UTF-8"><title>百度音乐标签页面</title><linkhref="css/上机练习1.css"rel="stylesheet"type="text/css"/></head><b 查看详情
java编程思想第四版(完整中文高清版)pdf
这是一本有独到、深入的见解的Java语言,以通俗易懂及小而直接的示例解释了一个个晦涩抽象的概念。本书共22章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组... 查看详情
cprimerplus(第六版)第五章编程练习答案(代码片段)
前言:由于不是太复杂,第五章的程序我就全部集成在一个程序了,仅供参考,新手勿喷。(梅开三度CH05 Codeanswer:#include<stdio.h>#defineSIXTY60constfloatYINCUN=0.5;constfloatYINCHI=0.3;voiddouble_printf(doubl 查看详情
《java编程思想》第四版pdf下载中文版和英文版高清pdf扫描带书签
一、链接:中文版: https://pan.baidu.com/s/1d07Kp4 密码:x2cd英文版: https://pan.baidu.com/s/1boOSdAZ 密码:rwgm文件截图:二、注意:中文版有一页(文件页码548,书籍页码515)图像缺失。不过没关系,只是一页源码以及简单... 查看详情
java编程思想第4版第四章练习10
题目:吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序。以两个0结尾的数字是不允许的,例如,下列数字都是“吸血鬼... 查看详情
离散数学第四第五章
第五次个人作业:个人总结
...你做了哪些作业陈棋---第一次个人作业陈棋---第一次个人编程作业第一次结对作业:原型设计陈棋---第三次个人作业第四次个人作业——案例分析21组—重振嵌入式荣光—团队展示第二次团队作业:选题报告第三次团队作业:需... 查看详情
《java编程思想》读书笔记<一>
第二章一切皆对象java是面向对象的语言。1.我们怎么操作对象?每种语言都有自己的操纵内存中元素的方式,java使用引用操作内存中元素(对象)。引用可以独立存在,例如:Strings;表示创建一个引用。但是对象一旦创建,需... 查看详情
《java并发编程的艺术》读后笔记-第五章java中的锁(代码片段)
文章目录《Java并发编程的艺术》读后笔记-第五章Java中的锁第五章Java中的锁1.Lock接口1-1定义1-2Lock的使用1-3Lock与synchronized区别1-4Lock的API2.队列同步器2-1定义2-2队列同步器的接口和示例2-3队列同步器的实现分析1)同步队列2ÿ... 查看详情
练习代码——《算法(第四版)》
2017年11月20日。1importjava.util.Arrays;23publicclassProgram4{5publicstaticvoidmain(String[]args)6{7//testBinarySearch(‘+‘);8euclid(104,24);9}1011publicstaticintgcd(intp,intq)12{13System.out.println("p:"+ 查看详情
第五章:面向对象1
...,针对面向过程的不足推出了面向对象开发思想。区别1. 编程思路不同:面向过程以实现功能的函数开发为主,而面向对象要首先抽象出类、属性及其方法,然后通过实例化类、执行方法来完成功能。2. 封装性:都具有封装性,... 查看详情
使用java实现面向对象编程——第五章异常
1、 尝试通过if-else来解决异常问题:Eg: publicclassTest2{ publicstaticvoidmain(String[]args){ Scannerin=newSca 查看详情
学习第四章与第五章的感悟
从第四章开始接触类与对象,了解类的定义,类包括标准类和用户自定义类,通常我们用的都是用户自定义类,在类中可以定义构造器,一个类中最少可以定义一个构造器,构造器与类同名,构造器有一个或多个参数,构造器没... 查看详情