📄 1_java学习笔记.txt
字号:
2004-8-12 星期四 阴有暴雨
1. 如何设置Java开发环境(Win2000)
答:Start-Control panel-System-Advance-Environment Variables
设置环境变量:
PATH = %PATH%;c:\j2sdk1.4.2_05\bin;
CLASSPATH = .;
注:javac编辑器总是在当前查找文件,而java解释器只有在类路径中包含“.” 目录的情况下才会查找当前目录。如果类路径没有设置,并不会产生什么问题--黙认类路径中包含“.”目录。但,如果设置了类路径,却没有包含“.”话,就会产生问题--程序编译时不会出错,但却无法运行。
2. 什么是Java?
答:1) 编程语言(先编译再解释);
2) 开发环境;
3) 运行环境;
4) 部署环境;
3. Java的特点
答:1) 简单(Java语法是C++语法的一个“纯净”版本);
2) 可移植性
3) 面向对象
4) 分布式(Java把打开套接字连接等繁琐的网络任务变得非常容易)
5) 健壮性(Java编译器会检查出很多其他语言在运行时刻才显示出来的错误;Java采用的指针模型可以消除重写内存和数据崩溃的可能)
7) 多线程(多线程编程的简单性是Java成为流行的服务器端开发语言的主要原因之一)
8) 安全(用Java可以构建防病毒和防篡改的系统)
9) 动态(Java可随意增加新的方法以及实例变量,而客户端却不需做任何的更改)
10)体系结构中立(字节码与计算机体系结构无关,只要存在运行时系统,可在多种处理器上执行)
4. Java中基本概念
答:1) 源文件
在最顶层只包括一个public类型的类/接口,文件名与类/接口名同并以.java作为文件后缀。
2) 包(package ,在源文件中this idertify只能放在第一行,且最多只能是一行)
一个将类和接口组织在一块的实体,在文件系统中以目录/文件夹型式呈现。
事实上今天所学知识远比上面列出的要多,更多的知识点通过练习提前和我们见面了,像如何自行创建类、创建类的属性和方法、控制打印输出的格式(通过消息对话框输出结果)、以及局部变量、实例变量、全局变量(类变量、静态变量)间的区别。以上知识点在以后的学习中会逐渐接触到,是故不详细介绍。另外,今天的学习内容是自己以前花了几倍的时间才摸索清楚的。有人手把手引着,真好!
教Java的老师有二位,一位传授知识、一位辅导练习。授课的薛老师讲课不温不火、胸有成竹。看到他,仿佛看到Java的高度。辅导的薛老师有问必答、拉近了我们与Java的距离。
2004-8-13 星期五 阴
1. 注释的三种形式
答: // 单行注释
/* 一或多行注释 */
/** 文档注释 */
2. Java代码中的“;”、“{}”、“ ”
答:Java语句以分号分隔;
Java代码块包含在大括号内;
忽略空格。
3. 标识符
答:1) 用以命名类、方法和变量、以及包;
2) 以字符、“_”或“$”开头;
3) 无长度限制。
4. 数据类型
答:1) 整型
byte 8位 -128到127
short 16位 -2^15到2^15-1
int 32位 -2^31到2^31-1
long 64位 -2^63到2^63-1
2) 浮点类型
float 32位
double 64位
3) 字符类型
char 16位
4) 布尔型
boolean false/true
注:1) char是无符号的16位整数,字面值必须用单引号括起来;
2) String 是类,非原始数据类型;
3) 长整型数字有一个后缀为“L”或“l”,八进制前缀为“0”,十六进制前缀为“0x”;
4) 黙认浮点类型为double;
5) float数据类型有一个后缀为“f”或“F”,Double数据类型后可跟后缀“D”或“d”;
5. identifiers Naming Rules
答:1) 类/接口名首字母大写;
2) 方法、变量名第一个字母小写,其余首字母大写;
3) 常量名称全部大写;
4) 包名全部小写。
6. 理解对象
答:在OOP中,程序由对象组成,这些对象具有某种属性以及对象可执行的某些操作(方法)。OOP高效的关键在于它让每个对象负责执行一组相关的任务。
2004-8-16 星期一 阴
表达式和控制流程
1. 变量和作用域
答:1) 局部变量
定义在方法内部,其作用域为该方法,也称为临时变量、栈变量。
2) 实例变量
定义在类内部,其作用域为整个类。如未定义初值,系统会自动为其赋黙认值。
类型 黙认值
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char '\u0000'
boolean false
All reference types null
2. 操作符
答:1) >> 前面是零补零,前面是一补一;
2) >>> 无符号右移;
3) && 短路与,前面为假,表达式为假,后面不须计算;
4) || 短路或,前面为真,表达式为真,后面不计算;
3. 数字类型之间的转换
答:1) byte ——→ short ——→ int ——→ long
2) char ——→ int - - - → float
3) float ——→ double
4) long - - - → float+++++++++++++++
5) long - - - → double
6) int ——→ double
注:1)实箭头表示无信息损失的转换,虚箭头表示转换可能引起损失;
2)int和float同为32位,但float要有几位表示幂的位数,在精度位数上要比int要小,所以有可能会有损失。long转为double同理;
3)char和short同为16位,但char属无符号数,其范围为0~2^16, short的范围为-2^15~2^15-1 , 所以char和short不能相互转换;
4)byte、short、char属child型,在计算时会自动转为int型,然后转为更大范围类型(long、short、double)。
4. 强制类型转换
答:1) 语法:圆括号中给出要转换的目标类型,随后是待转换的变量名。例:doublc x=9.997;int nx = (int)x;
2) 如果试图强制转换的类型超出了目标类型的范围,结果是一个被截取的不同的数值;
3) 不能在布尔值和任何数字类型间强制类型转换,如确要转换,可使用条件表达式,例:b?1:0。
5. 自动转换的三种类型
答:1) 赋值 double d=1.23f;
2) 方法调用 Math.sqrt(2);
3) 数值计算转换 -9.232e20+1;
6. 强制转换(cast)的二种类型
答:1) 赋值
2) 方法调用
7. switch与case
答:1) switch变量可以是byte、short、char、int;
2) default值可以位于switch代码顶部、中部或底部;
3) break不是必须的。例如:case 1:case 2:case 3:
2004-8-17 星期二 阴
数组
1. 声明数组
答:1) 一组相同类型(可以是类)数据的集合;
2) 一个数组是一个对象;
3) 声明一个数组没有创建一个对象;
4) 数组能以下列形式声明:
int[] i 或 int i[]
Car[] c 或 Car c[]
2. 创建数组
答:1) 创建原始数组 int[] i = new int[2];
2) 创建类类型数组 Car[] c = new Car[100];
3) 数组创建后有初始值。
3. 初始化数组
答:1) 初始化、创建、和声明分开
int[] i;
i = new int[2];
i[0] = 0;
i[1] = 1;
2) 初始化、创建、和声明在同一时间
int[] i = {0,1};
Car[] c = {new Car(),new Car()};
4. 多维数组
答:1) 有效
int[][] i1 = new int[2][3];
int[][] i2 = new int[2][];
i2[0] = new int[2],i2[1] = new int[3];
2) 无效
int[][] i1 = new int[][3];
3) 数组长度
int[] i = new int[5];
int len = i.length;//len = 5;
Student[][] st = new Student[4][6];
len = st.length;//len = 4;
len = st[0].length;//len = 6;
请问以下哪段代码哪个可正确执行?(a,c)
1. a char[] i = {'a','b'}; i = new char[]{'b','c'};
b char[] i = {'a','b'}; i = {'b','c'};
c char[] i = new char[2]; i = new char[]{'b','c'};
d char[] i = new char[2]; i = {'b','c'};
2004-8-18 星期三 晴
今天讲完数组,类的概念开了一个头。封装、继承、多态,由这三个概念展开、举例、举猫、狗、哺乳动特的例子。举给猫、狗增加一只眼睛只要改变一下父类例子。三只眼睛的狗?我们哈哈大笑,只是,今天的日记怎么写?都是一些概念性的东西。
接口(interface)是为了解决多重继承,继承产生多态(类、方法)。封装可以最大限度地代码重用。类是一种抽象、包含有属性以及改变属性的方法。对象是类的实例,除了这些还有什么?数组是对象吗?
不能确定,那查API、问同学、请教老师。还不行?那老师给你开小灶吧!教室后头架着DV,用影像真实地记录着我们的学习生活,谁也不许掉队。
大多数知识在课堂上解决了,晚上的时间,看书、预习,能看多远看多远。自已看,雾里看花;而老师教,一片瞪明。一路通透下去,只是依然担心:十八天能否将Core Java讲完。
2004-8-19 星期四 晴
对象和类(上)
1. 封装、多态、和继承
答:1) 封装
a. 把数据和行为结合在一个包中,并对对象的使用者隐藏数据的实现过程。对象中的数据称为对象的实例字段(instance field), 操作数据的函数和过程称为对象的方法(method)。一个特定对象就是类在实例字段上有着特定值的某个实例。
b. 实现封装的关键在于绝不让方法直接访问其他类的实例字段。
2) 继承
a. 在现有类的基础上构建新的类。当继承一个现有类时,就重用(继承)了那个类的方法和字段,同时,还可以向新类中增添新的方法和字段。
b. 在通过扩展超类来定义子类时,只需要说明子类和超类的区别就行。所以在设计类时,把最通用的方法放在超类中,把更专门的方法放在子类中。
3) 多态(polymorphism)
一个对象变量可以指向多种实际类型的现象。
2. 类和对象
答:1) 类:数据类型/元数据的抽象;
2) 对象:类的实例(instance of)。
3. 方法定义
答:1) 格式 <modifiers><return_type><name>([argument_list>])[throws <exception>]{<block>}
例如:public String getName(){ return name; }
2) 当没有返回值时,返回类型必须被定义为void;
3) 构造方法没有返回类型。
4. 参数传递
答:Java语言总是使用传值调用。这意味着方法得到的只是所有参数值的拷贝。因此,方法不能修改传递给它的任何参数变量的内容。
5. this
答:1) this是个隐式参数,代表被构造的对象;
2) 如果构造器的第一个语句具有形式this(...),那么这个构造器将调用同一类中的其他构造器。
6. 封装的特点
答:1) 使具体实现不可视;
2) 对所有的用户统一接口;
3) 增强可维护性。
7. 方法重载
答:1) 方法名相同;
2) 参数必须不同;
3) 返回类型可以不同;
2004-8-20 星期五 晴
对象和类(下)
8. 创建和初始化对象
答:1) 为一个对象分配内存空间,并初始化这个对象的值为:0/null/false。
2) 调用构造方法。
9. 构造器
答:1) 构造器和类具有相同的名字;
2) 一个类可以有多个构造器;
3) 构造器可以有0个、1个或者多个参数;
4) 构造器没有返回值;
5) 构造器只能和new运算符一起被调用。
10. 构造器重载
答:1) 黙认构造器指没有参数构造器,它把所有实例字段设为默认值;
2) 如果编写的类没有构造器,系统会自动提供黙认构造器,那么构造没有构造参数的对象是非法的。
11. 子类
答:1) 是一种关系(现有类称为超类(super class)、基类(base class)、或是父类(parent class); 而新类称为子类(subclass child class)或者是派生类(derived class));
2) 一种声明类型,public class Student extends Person{...};
3) 单继承。
12. 继承
答:1) 构造器不能被初始化;
2) 方法和字段可以被初始化;
3) 子类构造器自动调用父类的黙认构造器;
4) 当父类黙认构造器不存在时,子类构造器要显式调用超类的其它构造器。
13. Super
答:1) 调用超类方法;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -