说明,第一章名字叫“快速浏览”,简要的过了一般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 A10 {11 public void printlnB()12 {13 System.out.println("B");14 }15 }16 17 class C18 {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,编译执行就会有编译错误了,报错截图如下图:(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,但一直没怎么注意,还有这种高级用法,怎么用,以后再看。