`
lzd0716
  • 浏览: 6142 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
最近访客 更多访客>>
社区版块
存档分类
最新评论

读<ThinkingInJava>有感(二)

阅读更多
    刚刚复习完控制流程,初始化及清理等相关类容,今晚就给各位分享分享下小弟复习后感。

    1、ForEach

     关于ForEach,想必大家都用过,也知道它仅仅适用于数组及iterable对象,那么ForEach遍历String呢?那就要使用String里的toCharArray()了。代码如下:
import java.util.Random;

public class ForEachFloat {
	public static void main(String[] args) {
		Random rand = new Random(47);//Random(seed) seed为种子数,加参数则产生的随机数不变,默认值为当前系统时间
		float[] f = new float[10];
		for(int i = 0; i < 10; i++)
			f[i] = rand.nextFloat();
		for(float x : f)
			System.out.println(x);
	}
} 

   
    2、goto

    虽然是讲goto,但是java中并没有goto,却有类似goto的的跳转操作。这与break和continue这2个关键字有关,但并不常用,只是提醒下大家java也是有跳转操作的。

    3、动态数组

    给段代码,大家自己看吧。
public class DynamicArray {
	public static void main(String[] args) {
		Other.main(new String[]{ "fiddle","de","dum" });
	}
}

class Other {
	public static void main(String[] args) {
		for(String s : args)
			System.out.println(s + " ");
	}
}


    4、静态块

    静态块在首次使用时执行,且仅执行一次。非静态块在调用任意显示构造器后,某些操作都会发生。
    而初始化的顺序是先静态对象,而后是“非静态对象”。
    当用new xxx()创建对象的时候,首先将在堆上为xxx对象分配足够的空间。
    接着这块空间会被清零,然后自动将对象中的所有基本类型数据设置为默认值。
    这时候才执行所有初始化动作。
    最后才执行构造器。
    这里值得注意下的是各种数据类型的默认值:
    boolean       false
    char          [(里面是个正方形- -~)]
    byte          0
    short         0
    int           0
    long          0
    float         0.0
    double        0.0
    书上char类型的默认值是一个空格,而在我机器上运行是一个正方形,爆汗中~,而且复制不出来。 这是为啥,在这里小弟求解释了。
    下面给出一段关于静态块与非静态块的code。
class Cup {
	Cup(int marker) {
		System.out.println("Cup(" + marker + ")");
	}
	void f(int marker) {
		System.out.println("f(" + marker + ")");
	}
}

class Cups {
	static Cup cup1;
	static Cup cup2;
	Cup cup3;
	Cup cup4;
	static {
		cup1 = new Cup(1);
		cup2 = new Cup(2);
	}
	{
		cup3 = new Cup(3);
		cup4 = new Cup(4);
	}
	Cups() {
		System.out.println("Cups()");
	}
}

public class ExplicitStatic {
	public static void main(String[] args) {
		System.out.println("Inside main()");
		Cups.cup1.f(999);
		new Cups();
	}
}


    5、可变参数列表

    不瞒给位说,这个知识点我以前居然不知道,今天才知道的。惭愧啊!!
     现在发现这个还真蛮有用的,具体用处不用我讲了吧(其实我也不是特别清楚),呵呵,给段代码,大家参考参考吧。
public class OptionalTrailingArguments {
	static void f(int required, String... trailing) {
		System.out.print("required: " + required + " ");
		for(String s : trailing)
			System.out.print(s + " ");
		System.out.println();
	}
	public static void main(String[] args) {
		f(1,"one");
		f(2,"one","two");
		f(0);
	}
}

    在这里特别提下的概念就是“自动包装机制”。对于我们这等站在巨人肩膀上的人来说,这种概念普片理解不透彻,包括me。网上也搜了搜,没有特别详细的解释,如有大牛,不嫌麻烦,解释下吧。

    最后,还是这句话,希望广大的程序员们不管你是新手,还是大牛,大家共同学习共同进步吧!
分享到:
评论

相关推荐

    WCdom解析xml

    &lt;name&gt;thinkinginjava&lt;/name&gt; &lt;price&gt;85.5&lt;/price&gt; &lt;/book&gt; ``` 为了处理这样的XML文档,DOM(文档对象模型)被引入。DOM是一种标准的数据结构,用于表示XML文档,并提供了一系列方法来访问和修改文档内容。DOM将...

    ThinkingInJava

    ThinkingInJava

    Thinking.In.Java.3rd.Edition.Chinese.eBook.pdf

    美国经典的java学习教程!作者连续获得多个大奖!&lt;br&gt;这个是目前网络上做好的中文翻译版本!&lt;br&gt;最新的原版为4TH,但是还没有...&lt;br&gt;我还会把原版的3rd以及4th都上传&lt;br&gt;有时间的话 我还会继续上传原版的课后习题答案!

    ThinkinginJava

    ThinkinginJava cn.chm

    thinkingInJava15:泛型

    泛型可以有边界,如 `public class Box&lt;T extends Comparable&lt;T&gt;&gt;`,这里的 `Comparable&lt;T&gt;` 就是边界,意味着T必须实现Comparable接口,使得Box内的对象可以比较。 6. **类型擦除**: 虽然泛型在编译时提供了...

    thinkinginjava

    讲解java的图书

    ThinkingInJava 第二版 第三版 第四版 中英全套

    ThinkingInJava 第二版 第三版 第四版 中英全套 并且含 源码

    ThinkingInJava第二章习题答案

    第二章主要探讨了对象和类的概念,这是面向对象编程的基础。在这一章中,习题设计的目标是帮助读者巩固对对象、类、封装、继承以及多态等核心概念的理解。 一、对象与类的基本概念 对象是程序中的实体,它具有状态...

    ThinkingInJava-3rd-code.rar

    这本书的第三版(3rd edition)配套代码库"ThinkingInJava-3rd-edition-code"为读者提供了丰富的实践示例,帮助理解书中的理论知识。 1. **面向对象编程基础**:Java是一种面向对象的语言,它支持类、对象、继承、...

    thinkinginjava 中文

    thinkinginjava 中文 4th edition pdf

    ThinkingInJava3th.pdf

    ThinkingInJava 第三版 中文

    thinkinginjava帮助文档

    thinkingin,java,thinkinginjava,帮助文档 thinkingin,java,thinkinginjava,帮助文档 thinkingin,java,thinkinginjava,帮助文档 thinkingin,java,thinkinginjava,帮助文档 thinkingin,java,...

    ThinkinginJava第三版+习题答案

    ThinkinginJava 第三版 中文 习题答案

    ThinkingInJava3.rar

    这本书中文译本的压缩文件名为"ThinkingInJava3.rar",这表明它是该书的第三版。"java;"标签进一步确认了该内容与Java编程语言紧密相关。 Java是一种广泛使用的面向对象的编程语言,它的设计目标是具有简单的语法、...

    study_ThinkinginJava_

    根据提供的信息,“study_ThinkinginJava_”压缩包文件包含了你在阅读这本书时所做的课后练习题和笔记,这将是一个宝贵的自我学习和复习资源。 在《Thinking in Java》中,你可以找到以下关键知识点: 1. **基础...

    ThinkinginJava3中文版和习题及答案

    ThinkinginJava3中文版和习题及答案

Global site tag (gtag.js) - Google Analytics