|
Posted on 2008-07-27 17:01 ∪∩BUG 阅读(504) 评论(1) 编辑 收藏 所属分类: Java学习笔记
1JAVA笔记
22008 04 22
31.用javac编译代码时,javac 后的文件名对大小写不敏感,如一个名为Hello.java的文件,
4 可以这样写:javac hello.java或javac HEllO.java
52.用java解释代码时,java 后跟的是一个类名,而不是一个文件名.如要解释文件名为Hello.java的文件(类名为Hello是一个类名,
6 文件名要写类名相同)必须写成java Hello.
73. Label prompt1; //Label 对象是一个可以容器中放置文本的组件
8 TextField input1; //TextField 对象是个允许编辑单行文本的文本组件
94.java中对boolean类型赋值时只能是true或false,不能像C语言一样的赋任意不为0 的数.
10 如在用到if或while语句时,条件只能用boolean值的true或false.如:
11 if(true){
12 }
13 while(false){
14 }
155.java中数组:
16 1)可以在定义数组时值,
17 如:
18 int [] num={1,2,3}//ok
19 或:
20 int [] num=new int[]{1,2,3}//ok
21 注意:不能这么指定大小:
22 int [] num =new int[3]{1,2,3}//error!!!
23 但不能在定义之后再赋值,(非法)
24 如:
25 int [] num;
26 num={1,2,3}//error
27 2)二维数组
28 int [][]num =new int[][]{1,2,3,4,5,6};//error
29 int [][]num =new int[][]{{1,2,3},{4,5,6}};//初始化赋值两行三列ok
30 int [][]num =new int[2][3]{{1,2,3},{4,5,6}};//初始化指定大小两行三列error
316.关于JAVA的"++"操作:
32 int i =3;
33 int count =(i++) +(i++) +(i++); //这么计算:(3) +(4) +(5)
34 int count =(++i) +(++i) +(++i); //这么计算:(4) +(5) +(6)
35 System.out.println("i="+i);
36 System.out.println("count="+count);
37
1JAVA笔记
22008 04 24
3
41.补码:
5 已知一个负数的补码,将其转换为十进制数,步骤:
6 1、先对各位取反;
7 2、将其转换为十进制数;
8 3、加上负号,再减去1。
9 例如:
10 11111010,最高位为1,是负数,先对各位取反得00000101,转换为十进制数得5,加上负号得-5,再减1得-6。
112.左移,右移,无符号右移.
12 int j = 8;
13 int f = j << 2;//左移.每左移一位相当于乘以2,这里乘以4
14 int g = j >> 2;//右移,每右移一位相当于除以2,这里除以4
15 int h = j >>> 2;//无符号右移,每右移一位相当于除以2,这里除以4
16
1JAVA笔记
2
32008 04 26
4
51.特殊变量this的使用:
6 关于实例方法和实例数据成员的进一步说明
7 一个类所有的实例(对象)调用的成员方法在内存中只有一份拷贝,
8 尽管在内存中可能有多个对象,而数据成员在类的每个对象所在内存中都存在着一份拷贝。
9 this变量允许相同的实例方法为不同的对象工作。每当调用一个实例方法时,
10 this变量将被设置成引用该实例方法的特定的类对象。方法的代码接着会与this所代表的对象的特定数据建立关联。
11
12 1)this代表对象本身,当类的成员变量与类成员方法的局部变量同名时,可以用this来区分.
13 2)this 还可以简化构造函数的调用
14class Point
15{
16 int x,y; //类的成员变量
17 //
18 Point ()//构造方法主要为类的对象定义初始化状态
19 {
20 this(1,2); //通过this简化构造函数的调用。
21 }
22 Point(int a ,int b)//重载构造方法
23 {
24 //initialization phase初始化段
25 x = a;
26 y = b;
27 }
28
29 //termination phase终止段
30 void output()
31 {
32 System.out.println("x ="+x);
33 System.out.println("y ="+y);
34 }
35
36 //void output(int x ,int y) //this变量代表对象本身
37 //{ //当类中有两个同名变量,一个属于类(类的成员变量),
38 // //而另一个属于某个特定的方法(方法中的局部变量),使用this区分成员变量和局部变量。
39 // this.x = x;
40 // this.y = y;
41 //}
42
43 //processing phase处理段
44 public static void main(String[] args)// main method
45 {
46 Point pt1;
47 pt1 = new Point();
48 //pt1.putput(4,5);
49 pt1.output();
50
51 }
52}
53
542. 类方法(静态方法)和类变量(静态变量)
55 1)class Point{
56 .
57 static int a;//定义一个类变量
58 stactic void output(){}//定义一个类方法
59
60 Point.output();//调用一个类方法
61 }
62 2)类方法只能引用类变量,不能引用非类变量,也不能调用非类方法
63 3)类变量可以被非类方法引用,类方法也可以通过对象调用
643.用final声明常量:
65 1)用final声明的常量的同时必须对他进行初始化;
66 2)非静态常量也可以在类的构造方法中初始化,
67 但如果类中有多个重载构造方法则必须在*每个没有调用已经初始化final常量方法*中都进行初始化.
68 3)**如果把这个常量声明为静态常量时(static final PI = 3.1415926)则必须在声明时初始化!
69
704.关于继承extends[**构造方法和析构方法不能被继承**]
71 1)JAVA是不允许多继承的.
72 2)在子类中定义一个与父类中同名,同返回类型,同参数个数和类型的成员方法称为方法的覆盖.即**子类的方法把父类的方法覆盖掉了**!!
73 在子类中的同名变量亦是如此,此时父类的同名变更将在子类中被隐藏起来!
74 3)如果要访问父类中被隐藏的成员变量或调用被覆盖的方法可以用Super.
75 4)每个子类构造方法的第一条语句,都是隐含地调用super();
76 **如果子类和父类中都有构造方法,则必须通过super()显示调用父类的构造方法!**
775.关于多态性:
78 1)通过覆盖父类的方法来实现,在运行时根据传递的对象引用,来调用相应的方法。
79 2)当我们把子类对象的引用传给声明为父类的一个对象变量,
80 如果子类有的方法就调用子类的方法,如果子类没有的方法就调用父类的方法!
816.可以用instanceof来验证某个对象是否是某个类的实例
82
83class Animal
84{
85 int weight,height;
86 Animal(int weight,int height)//Animal类的构造方法
87 {
88 System.out.println("Animal construct");
89 }
90 void eat()
91 {
92 System.out.println("Animal eat");
93 }
94
95 void breathe()
96 {
97 System.out.println("Animal breathe");
98 }
99}
100
101class Fish extends Animal //Fish类继承了Animal类
102{
103 int height;
104 Fish()//Fish类的构造方法
105 {
106 super(30,40);//显示调用父类中带参数的构造方法
107 System.out.println("Fish construct");
108 }
109 void breathe()//在了类中重写breathe方法
110 {
111 //super.breathe();//用super可以调用父类被覆盖的方法
112 //super.height = 40;//用super可以访问父类被隐藏的成员变量
113 System.out.println("Fish bubble");
114 }
115}
116
117class Intergration
118{
119 public static void main(String[] args)
120 {
121 //Animal an = new Animal();
122 Fish fh = new Fish();
123 //
124 //an.breathe();
125 //fh.height = 30;
126 //fh.breathe();
127 Animal an=new Animal(30,40);
128 Fish fh=new Fish();
129 an=fh;//将Fish的对象fh的引用赋给Animal的对象an后,an也变成了Fish的一个实例!
130 /**//*if(an instanceof Animal)
131 {
132 System.out.println("an is animal's instance");
133 }
134 if(fh instanceof Fish)
135 {
136 System.out.println("fh is fish's instance");
137 }*/
138 if(an instanceof Fish)//验证an是否是Fish的一个实例
139 {
140 System.out.println("an is fish's instance");
141 }
142 else
143 {
144 System.out.println("an isn't fish's instance");
145 }
146 if(fh instanceof Animal)
147 {
148 System.out.println("fh is animal's instance");
149 }
150 else
151 {
152 System.out.println("fh isn't animal's instance");
153 }
154 }
155}
156
1577.用面向对象的方法求:
158求一个长方形的周长和面积。
159以面向对象的程序设计方式思考:
160 1、一个长方形可以看成一个长方形对象。
161 2、一个长方形对象有两个状态(长和宽)和两个行为(求周长和求面积)。
162 3、将所有长方形的共性抽取出来,设计一个长方形类。
163 4、通过长方形对象的行为,就可以求出某个具体的长方形对象的周长和面积。
164
165//create a Rectangle class
166//declaration l and w variables for length and width
167//create perimeter method and area to count
168//creat main method
169//declaration object Rectal1 and Recral2
170//intialization variable l and w by object Rectal1 and Recral2
171//print the value
172
173class Rectangle
174{
175 int l,w;
176
177 //processing phase
178 int perimeter()
179 {
180 return 2*(l+w);
181 }
182
183 int area()
184 {
185 return l*w;
186 }
187
188 public static void main(String[] args)
189 {
190 Rectangle Recta1 = new Rectangle();
191 Rectangle Recta2 = new Rectangle();
192
193 //initialization phase
194 Recta1.l = 10;
195 Recta1.w = 30;
196 Recta2.l = 30;
197 Recta2.w = 20;
198
199 //termination phase
200 System.out.println("Recta1's Perimeter is: \t" + Recta1.perimeter());
201 System.out.println("Recta1's Area is: \t" + Recta1.area());
202 System.out.println("Recta2's Perimeter is: \t" + Recta2.perimeter());
203 System.out.println("Recta2's Area is: \t" + Recta2.area());
204 }
205}
206
1JAVA笔记
22008 04 29
3
41.package(包)
5 1)package语气必须是程序的第一条语气(除了注释语气和空白语气)
6 2)package的包名指的是一个文件夹或路径,也就是说,类名在package所在的目录下,在解释执行时必须标明类所在的路径.
7 如:
8 package cn.mybole;
9
10 class Test
11 {
12 public static void main(String[] args)
13 {
14 System.out.println("package test!");
15 }
16 }
17
18 //执行:java cn.mybole.Test
19 3)可以在编译时用 "-d ."(-d 和.之间有一个空格,.和*.java之间有一个空格)参数来在当前目录下生成目录 cn/mybole/Test.class,
20 即将*.class文件在生成的目录下生成.
21 如: javac -d . Test.java //在当前目录一生成包
22 javac -d E:\javalesson\Test.java //在指定目录(E:\javalesson)一生成包
23 4)用import关键字导入一个包(其中,java.lang包是自动导入的):
24 1.import java.io.File //导入java.io包中的File类
25 2.import java.io.* // 导入java.io包中的所有类
26 这种导入所有类的方法虽然方便,但是:
27 1.会消耗机器的大量内存
28 2.当远程加载时会因加载到本地的类过多而造成明显的延时.
29 5)导入一个包中的类后可以在当前类中用所导入的类直接定义变量
30 如: File f; //用已经导入的类定义变量
31 java.io.File f //当没有用import导入包时也可以通过完整的类名定义
32 6)如果要使用的类在同一个包中,无需用import语气就可以相互引用.
33
342.类的说明符
35 1)从外部软件包中访问非同一个包的一个类--public类
36 1.缺省的类是不能被外部软件包访问的.
37 2.只有声明为public的类才能通过import(或在当前类中以完整类名)被外部软件包访问.
38 如:
39 //Test2.java
40
41 //package cn.mybole;
42 package com.winsunlight; //com.winsunlight包
43
44 public class Test2 //Test类是public类.
45 {
46
47 }
48 //Test.java
49
50 package cn.mybole;
51
52 //import java.io.File;
53 //import java.io.*;
54 import com.winsunlight.Test2;//导入com.winsunlight包中的Test2类
55 class Test
56 {
57 public static void main(String[] args)
58 {
59 //File f;
60 //java.io.File f;
61 //System.out.println("package test!");
62 Test2 t2 = new Test2(); //访问com.winsunlight包中的Test2类
63 }
64 }
65 2)final类(最终类)不能被其他类所继承,其方法也不能被覆盖.
66 1.public final class Test2 //用public和final修饰的类可以用import引用,亦不能被继承.
评论
# re: Java学习笔记(一) 回复 更多评论
2008-07-28 16:29 by
从UltraEdit里复制的代码在这里都不整齐了..
花是半天时间才把比较喜欢的这个Blog的主题改成可以够宽的显示代码了..
|