Corejava上机实验.docx
- 文档编号:15139121
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:46
- 大小:39.20KB
Corejava上机实验.docx
《Corejava上机实验.docx》由会员分享,可在线阅读,更多相关《Corejava上机实验.docx(46页珍藏版)》请在冰点文库上搜索。
Corejava上机实验
第一章:
开始
一)基础实验:
1.在Linux下安装JDK,配置环境变量
安装JDK:
sudochmod777/opt
cpjdk-6u24-linux-i586.bin/opt
cd/opt
chmoda+xjdk-6u24-linux-i586.bin
./jdk-6u24-linux-i586.bin
配置环境变量:
cp~/.bahsrc~/.bashrc.bak
vi~/.bashrc
G==>到文件结尾
o==>下一行输入
JAVA_HOME=/opt/jdk1.6.0_24
PATH=JAVA_HOME$/bin:
$PATH
CLASSPATH=.
exportJAVA_HOMEPATHCLASSPATH
:
wq
.~/.bashrc
javac
echo$JAVA_HOME
2.编辑、编译、运行一个带有包名的Hello.java,输出HelloWorld!
viHello.java(example/chap01/src/Hello.java)
javac–dbinsrc/Hello.java
java–cpbincom.briup.chap01.Hello
3.编辑、编译、运行一个带有包名的MymathTest.java,完成整数的加减运算
viMymathTest.java(example/chap01/src/MymathTest.java)
javac–dbinsrc/MymathTest.java
java–cpbincom.briup.chap01.MymathTest
二)扩展实验:
1.JVM组成
类装载器:
将java字节码加载到内存
运行时数据区:
方法区:
类型信息
堆区:
对象
栈区:
保存方法调用状态,如局部变量、参数、返回值
PC寄存器:
指向下一条将要执行的指令
本地方法栈:
保存本地方法调用状态
执行引擎:
运行类方法中的指令
三)作业:
1.什么是JDK,其包括哪些内容
JavaDevelopmentKit(Java开发工具包),JDK主要包括内容:
a.Java虚拟机:
负责解析和执行Java程序,Java虚拟机可运行在各种平台上;
b.JDK类库:
提供最基础的Java类及各种实用类,java.lang、java.io、java.util,、javax.swing、java.sql等包中的类都位于JDK类库中。
c.开发工具:
这些开发工具都是可执行程序,主要包括:
javac编译工具;
java运行工具;
javadoc生成JavaDoc文档的工具
jar打包工具
2.和java相关的环境变量有那几个,它们有什么作用
JAVA_HOME:
简化其它变量设置过程中的内容输入。
可先行将JDK的安装路径定义为一变量,以后凡使用到JDK安装路径的地方均使用该变量进行替换。
PATH:
指定执行外部命令时找寻对应可执行文件的路径范围。
CLASSPATH:
代表Java类的根路径,java命令会从CLASSPATH中寻找所需的Java类;Java编译器编译Java类时,也会从CLASSPATH中寻找所需的Java类;classpath的默认值为当前路径。
3.java的优秀特性
跨平台:
字节码跨平台,在任何平台上字节码都一样,但不同平台有不同平台的JVM
易编程:
没有指针(垃圾回收器)、面向对象(符合人类思考方式)
代码安全:
有字节码校验器,适合在网络传输
4.字节码校验器验证哪些内容
代码和jvm规范一致
代码不能破坏系统的完整性
没有堆栈的上溢和下溢
参数类型是正确的
类型转换是正确的
5.java程序编辑、编译、运行过程
vixxx.java→javacxxx.java→javaxxx
6.java中包的作用
将有关联关系的类组织在一起,便于管理;解决命名冲突问题
7.什么是API,如何查看API
ApplicationProgrammingInterface
先查看package→class/interface→field/constructor/method
8.修正Test1.java、Test2.java、Test3.java、Test4.java四个java源文件中的错误,使其能够编译和运行(exercise/chap01)
第二章:
标识符、关键字、类型
1)基础实验:
1.单行、多行注释例子
example/chap02/src/CommentTest.java
2.写一java程序添加文档注释,通过javadoc产生API文档(包含作者、版本等信息)
example/chap02/src/CommentTest2.java
javadoc-d./doc-author-versionsrc/CommentTest2.java
3.数据类型测试例子
example/chap02/src/TypeTest.java
4.类、对象测试例子
example/chap02/src/Teacher.java
example/chap02/src/TeacherTest.java
二)扩展实验:
1.找零问题:
有2元,买东西花了1.1元,问找零多少?
System.out.println(2.00-1.10);
注意:
在需要精确答案的地方,要避免使用float或double;
对于货币计算,要使用int、long或BigDecima(用于浮点数计算)属于math
Importjava.util.*;
.
.
.
BigDecimaa=new
2.长整除问题:
longmicros_per_day=24*60*60*1000*1000;
longmillis_per_day=24*60*60*1000;
System.out.println(micros_per_day/millis_per_day);
输出结果。
注意:
当你操作很大的数字时,一定要提防溢出;较大整数运算可使用BigInteger
3.初级问题
System.out.println(12345+5432l)输出结果。
注意:
做题要细心;在long类型字面常量中,一定要用大写的L
三)作业:
1.java中注释的分类
java中注释分三类
//:
单行注释,如描述一个变量的作用
/**/:
多行注释,如描述类的作用、方法的作用、复杂算法的描述
/***/:
文档注释,需产生API文档时使用
2.java中标示符的命名规则
1)以字母、_和$开头,不能以数字开头,后跟字母、数字、“_”和“$”的组合
2)大小写敏感
3)没有长度限制
4)不能使用关键字
3.java中有哪些常用的基本数据类型
boolean、整型族(byte、short、int、long)、浮点型(float、double)、字符型(char)
4.类和对象的概念
类是现实世界中,具有相同属性和行为的事物的抽象(如鸟类、鱼类、人类)。
对象是类的具体化(万物皆对象、每个对象都是唯一的)。
5.基本数据类型和引用类型的区别
1)基本类型代表简单的数据类型,比如整数和字符。
引用类型代表复杂数据类型,引用类型所引用的实例包括操纵这种数据类型的行为。
通过"."运算符,就能访问引用变量所引用的实例的方法.
2)基本类型Java虚拟机会为其分配数据类型实际占用的内存空间;
引用类型仅是一个指向堆区中某个实例的指针。
例:
publicclassCounter{
intcount=13;
}
Countercounter=newCounter();
counter引用变量------------->Counter实例
count变量(占4个字节,值为13)
counter引用变量的取值为Counter实例的内存地址。
counter引用变量本身也占一定的内存空间,到底占用多少内存空间取决于Java虚拟机的实现,这对Java程序是透明的。
注:
counter引用变量到底位于Java虚拟机的运行时数据区的哪个区?
取决于counter变量的作用域,如果是局部变量,则位于Java栈区;静态成员变量,则位于方法区;实例成员变量,则位于堆区;
6.编程(exercise/chap02/exercise1)
1)模仿Teacher类创建Student类
要求:
Student类要描述姓名、性别、年龄
2)模仿TeacherTest类创建StudentTest类
要求:
a)在StudentTest类中创建Student的对象
b)为该对象的属性(姓名、性别、年龄)赋值
c)将该对象的属性(姓名、性别、年龄)输出
7.编程(exercise/chap02/exercise2)
1)为Teacher类添加一个方法,用于在教师原有薪水的基础上增加5000
2)修改TeacherTest类,增加对教师增加薪水方法的调用,并将增加后的薪水值输出
8.编程(exercise/chap02/exercise3)
已知类MyPoint表示一个二维的点,其定义如下:
publicclassMyPoint{
publicintx;
publicinty;
publicStringtoString(){
return("["+x+","+y+"]");
}
}
使用上面已提供的MyPoint类,建立一个TestMyPoint程序,该程序执行下列操作:
1)定义两个类型为MyPoint的变量,变量名为:
start和end。
每个变量赋值一个新的MyPoint的对象。
2)将start的x和y值设置为10,end的x值设置为20,y值为30。
3)打印输出这两点变量,使用类似于如下的代码:
System.out.println(“Startpointis”+start);
4)编译运行TestMyPoint。
5)声明一个类型为MyPoint的新变量,名为stray将现有变量end的引用值赋值给stray。
6)打印输出stray和end。
7)将新值赋值给stray变量的x和y成员。
打印输出strayendstart。
8)编译运行TestMyPoint。
end报告的值反映了stray中的变化,说明这两个变量引用的似同一个MyPoint对象。
但是,start并没有改变,说明start与另两个变量无关。
输出结果应与下面类似:
Startpointis【10,10】
Endpointis【20,30】
Straypointis【20,30】
Endpointis【20,30】
Straypointis【47,50】
Endpointis【47,50】
Startpointis【10,10】
第三章:
表达式和流程控制
一)基础实验:
1.局部变量和实例变量测试例子
example/chap03/src/VariableTest.java
2.操作符测试例子
example/chap03/src/OperatorTest.java
example/chap03/src/BitTest.java→位运算
3.if语句测试例子
example/chap03/src/IfTest1.java
example/chap03/src/IfTest2.java→判断闰年
4.switch语句测试例子
example/chap03/src/SwitchTest.java
example/chap03/src/Days.java→某一年月有多少天
5.for、while、dowhile循环语句测试例子
example/chap03/src/LoopTest.java→三种循环实训1累加到100
example/chap03/src/LoopRandom.java→产生10个[200,500]间的随机数
example/chap03/src/GcdLcm.java→求两个数的最大公约数和最小公倍数
6.break、continue关键字测试例子
example/chap03/src/BreakContinueTest.java
2)扩展实验:
1.复合赋值
shortx=0;
inti=123456;
x+=i;//编译通过,x=-7616
x=x+i;//编译错误i的范围比x大,不能自动转换,需强制x=(int)(x+i)
注意:
复合赋值表达式自动地将所执行计算的结果转型为其左侧变量的类型
2.判断奇数
publicbooleanisOdd(inti){
returni%2==1;
//returni%2!
=0;
}
注意:
当取余操作返回一个非零的结果时,它与左操作数具有相同的正负符号
3.逻辑操作符&&和位运算符&区别
注意:
&是位运算符,可以进行逻辑运算,但不会逻辑短路
4.条件运算符
inta=20;
intb=10;
charc='x';
inti=0;
System.out.println(a>b?
c:
0);
System.out.println(a
i:
c);
注意:
除非彻底理解表达式行为的复杂规范,通常最好在条件表达式中使用类型相同的第二和第三操作数
5.类型转换
System.out.println((int)(char)(byte)-1);
注意:
计算机中,数都以补码的形式存放,正数的补码是其本身,负数的补码是其绝对值取反加1;
如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码;
如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:
符号位为1,其余各位取反,然后再整个数加1.
类型转换时,如果最初的数值类型是有符号的,那么就执行符号扩展;如果它是char,那么不管将要被转换成什么类型,都执行零扩展
三)作业:
1.编程
exercise/chap03
第四章:
数组
一)基础实验:
1.数组基础(声明、创建、初始化、赋值)测试例子
example/chap04/src/ArrayTest.java
example/chap04/src/ArrayTest2.java
2.求一组数的平均值
example/chap04/src/ArrayAvgTest.java
3.求一组数的最大值
example/chap04/src/ArrayMaxTest.java
4.冒泡排序
example/chap04/src/ArraySortTest.java
5.java辅助类→java.util.Arrays辅助类的sort(int[]n)以及binarySearch(int[]n,intkey)
example/chap04/src/ArraySortTest2.java
6.随机抽取中奖手机号码
example/chap04/src/RandomTelphone.java
7.产生4位验证码
example/chap04/src/ValidateCode.java
8.多维数组测试例子
example/chap04/src/MultiArray.java
9.填充二维方阵
example/chap04/src/Martrix.java
10.数组拷贝
example/chap04/src/ArrayCopy.java
二)扩展实验:
1.产生100个[1,6]的整数,并统计每个整数出现的频率
example/chap04/src/Frequency.java
三)作业:
1.编程
exercise/chap04
第五章:
面向对象编程
1)基础实验:
1)java的三大特性是哪些?
每个特性的具体含义是什么?
2)范围修饰符有几种?
分别代表什么范围?
3)什么是构造器?
a)构造器就是和类名相同但无返回类型的方法
4)重写和重载的区别?
a)重写是子类的方法覆盖父类的方法,要求方法名和参数都相同
b)重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同,方法体也不相同,最常见的重载的例子就是类的构造函数
5)类的创建和初始化
i.example/chap05/Employee.javaii.example/chap05/EmployeeTest.java
6)参数传递
i.example/ch05/ParamterTest.java
ii.example/chap05/Student.java
7)this关键字的使用
a)example/ch05/Student.java
b)example/ch05/StudentTest.java
8)类的创建顺序
a)example/ch05/ObjectInit.java
9)重载的构建
a)example/ch05/OverloadTest.java
10)继承的使用
a)example/ch05/Person.java
b)example/ch05/Employee.java
c)example/ch05/EmployeeTest.java
11)说明super关键字的使用情况
a)可以调用父类的属性和方法
b)可以区分子类和父类的属性和方法
c)调用父类构造器
12)多态的练习
a)example/ch05/Shape.java
b)example/ch05/ShapeTest.java
2)扩展实验:
a)参考值传递和引用传递的不同方式来分析书上ParamterTest.java程序
i.前两个输出i值都为2基本类型参数值传递的过程是参数拷贝过程
ii.第三个输出是”zhao”,”male”,20,第四个输出是”larry”,”male”,20
引用类型参数值传递的过程是堆区地址传递的过程
iii.最后两个输出都是”zhao”,”male”,20.最后一个的参数又重新开辟的一段内存,与原来的不是同一个地址,所以互不影响.
b)通过实例说明一下重载的二义性,提出解决办法
i.处理结果存在不确定性
eg:
add(inta,floatb)
add(floata,intb)
add(10,10)
ii.强制类型转换或者精确对应参数
c)什么时候使用instanceof关键字
i.当一个变量没办法说明在哪一个类域时,通过使用instanceof关键字可以进行判断
ii.if(kevininstanceofManager){
Managermanager=(Manager)kevin;
}.
三)作业:
1.编程
exercise/chap05
第六章:
高级语言特性
1)基础实验:
1).static变量和实例变量的区别?
a)static变量对于每个类而言在内存中只有一个,能被类的所有实例所共享;实例变量对于每个类的每个实例都有一份,它们之间互不影响;
b)Java虚拟机在加载类的过程中为static变量分配内存,实例变量在加载完类后创建对象时分配内存;
c)static变量存在方法区,实例变量存在堆区;
d)static变量可以直接通过类名访问,实例变量通过引用类型变量访问;
2)分析Count.java代码,说明里面所对应的值.
a)第一次count值为1serialName值为1
b)第二次count值为2,serialName值为2
3)Static的使用
a)example/ch06/DogTest.java
4)利用static实现单例模式
example/ch06/SingletonTest.java
4)Final修饰符的作用?
a)Final修饰的变量是不能被更改
b)Final修饰的class不能被继承
c)Final修饰的方法不能被重写
5)Final的使用
a)examle/ch06/FinalTest.java
6)abstract修饰符的作用?
a)可用来修饰类和成员方法。
i.用abstract修饰的类表示抽象类,抽象类不能实例化,即不允许创建抽象类本身的实例。
没有用abstract修饰的类称为具
体类,具体类可以被实例化。
ii.用abstract修饰的方法表示抽象方法,抽象方法没有方法体。
抽象方法用来描述系统具有什么功能,但不提供具体的实现。
iii.没有abstract修饰的方法称为具体方法,具体方法具有方法体。
b)语法规则;
1)抽象类中可以没有抽象方法,但包含了抽象方法的类必须被定义为抽象类;
2)没有抽象构造方法,也没有抽象静态方法;
3)抽象类中可以有非抽象的构造方法;
4)抽象类及抽象方法不能被final修饰符修饰。
7)abstract的使用
example/ch06/AnimalTest.java
8)描述接口
a)一个类只能继承一个直接的父类,但能实现多个接口
b)接口是抽象类的抽象,抽象类可存在有方法体的方法,接口中的方法全部为抽象方法
c)接口中的所有方法均是抽象方法,默认都是public、abstract类型的
d)接口中的成员变量默认都是public,static,final类型,必须被显式初始化
e)接口中没有构造方法,不能被实例化
9)接口的使用
a)example/ch06/Runner.java
b)example/ch06/PersonTest.java
c)example/ch06/Test.java
d)example/ch06/CatTest.java
e)example/ch06/DriverTest.java
10)内部类的使用
a)
静态内部类:
i.静态内部类的实例不会自动持有外部类的特定实例的引用,在创建内部类的实例时,不必创建外部类的实例
ii.静态内部类可以直接访问外部类的静态成员,如果访问外部类的实例成员,就必须通过外部类的实例去访问。
iii.在静态内部类中可以定义静态成员和实例成员
iv.可以通过完整的类名直接访问静态内部类的静态成员
b)实例内部类:
i.在创建实例内部类的实例时,外部类的实例必须已经存在
ii.实例内部类的实例自动持有外部类的实例的引用。
在内部类中,可以直接访问外部类的所有成员,包括
成员变量和成员方法
iii.外部类实例与内部类实例之间是一对多的关系,一个内部类实例只会引用一个外部类实例,而一个外部类实例
对应零个或多个内部类实例。
在外部类中不能直接访问内部类的成员,必须通过内部类的实例去访问。
iv.实例内部类中不能定义静态成员,而只能定义实例成员
v.如果实例内部类B与外部类A包含同名的成员,那么在类B中,this.v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Corejava 上机 实验
![提示](https://static.bingdoc.com/images/bang_tan.gif)