说明,第一章名字叫“快速浏览”,简要的过了一般Java中的这几个基本概念和技术。虽然之前有自学过Java,也做了一段时间Android开发,但是对这里的一些基础内容还是之前不知道的和不很清楚的内容,简单做个笔记。

1 方法的几个概念



1 public static void main(String[] args)
2 {
3 //...
4 }



修饰符:public和static;
返回类型:void;
方法签名:方法名和参数列表,即main和String[] args;
方法头:修饰符、返回类型和方法签名,即public static void main(String[] args);
方法体:{}之间的代码;
方法声明:1-4行全部。

2 枚举类型

每个枚举常量都是一个指向其值所对应的对象的静态字段,而非整型数值。这个和C、C++中的枚举类型有些区别,而C#中的枚举类型是怎样的,记不甚清矣。

3 for循环

在初始化部分声明循环变量是for特有的,其他控制流语句不允许在语句内部声明变量(这个没注意过,也没试过)。而循环变量的作用域是循环体内。

4 创建对象和静态方法

实例化,分配到栈的内存区域;所有对象都是通过引用访问的。静态方法不能直接访问非静态成员,因为没有特定的对象,即this引用。

5 String和printf

String不是字符数组,不能将字符数组赋值给String引用,可以将字符数组作为参数给String构造方法创建String对象。String对象是只读或不可变的!



System.out.printf("The value of pi is % .3f %n",Math.PI);



这里的%n不等同于\n,会因操作系统而异!(这个一直不知道。)

6 覆盖override

做法是实现和超类具有相同方法签名和返回类型的方法。这里做了简单的实验,代码如下:



1 class A
 2 {
 3     public void println()
 4     {
 5         System.out.println("A");
 6     }
 7 }
 8 
 9 class B extends A
10 {
11     public void printlnB()
12     {
13         System.out.println("B");
14     }
15 }
16 
17 class C
18 {
19     public static void main(String[] args)
20     {
21         new B().println();
22     }
23 }



(1)这样的代码,直接编译执行,没有问题,显示的结果当然是A;
(2)把Class B的printlnB改成println,编译执行,也没有问题,显示的结果是B,这很好理解;
(3)接上,把Class B的println的public改成private,编译执行就会有编译错误了,报错截图如下图:

Java程序设计第四版 郎波 PDF java语言程序设计第四版_移动开发

(4)接上,把new B().println();注释掉,编译报的上半部分的错误;
(5)接(3),把new B().println(),改成new B().super.println()和new B().super().println()都没法通过编译(当然这样做可能没有什么意义,全当实验了)。
这里面还是有些东西可以去研究的,等看了专门的章节后在去实验。

7 注解

就是用@override什么的,书中给出了这种注解,当然没说清楚,暂时马克一下:



@Reviewed(reviewer = "Joe Smitch", date = 20050331)
// ... 

@interface Reviewed
{
    String reviewer();
    int date();
}



虽然在Android代码中常见到@Override,但一直没怎么注意,还有这种高级用法,怎么用,以后再看。