S1java笔记作业1Word格式.docx
《S1java笔记作业1Word格式.docx》由会员分享,可在线阅读,更多相关《S1java笔记作业1Word格式.docx(61页珍藏版)》请在冰豆网上搜索。
Day1:
7.JDK版本:
JAVAME微型版
手机软件开发
JAVASE标准版
桌面应用程序
JAVAEE企业版
企业级应用开发
8.java语言的特点:
1.简单
没有C、C++中的头文件,指针,运算符重载
2.面向对象
可以开发出较大型的应用程序
3.分布式
通过网络访问应用程序,突破空间限制
4.健壮性(编译时错误检测)
消除有出错倾向的状态:
指针
5.安全性(蠕虫病毒)
禁止运行时堆栈溢出、内存空间未授权读写
6.可移植性
JVM
9.java环境变量配置:
JAVA_HOME:
JDK安装目录,方便在后面两个环境变量的配置中直接被调用即可
path:
%JAVA_HOME%\bin列出可执行文件的搜索路径
classpath:
%JAVA_HOME%\lib\tools.jar
%JAVA_HOME%\lib\dt.jar
.(当前路径)
是java加载类的路径,只有在classpath设置的路径中的类才能被加载
在CMD下运行:
1.java
2.javac
3.java-version
10.JDK安装目录介绍:
Bin编译器和工具
Demo演示
DocsHTML格式的类库文档
Include用于编译本地方法的文件
Jrejava运行环境文件
Lib类库文件
Src类库源文件
11.第一个java程序:
1.文件名与公共类的名字要一致
2.一个文件中可以有多个类,但是只能有一个公共类
3.使用“javac类名.java”来编译源程序
4.使用“java类名”来执行java程序
5.main方法是程序运行的入口,方法必须按照如下书写方式:
publicstaticvoidmain(String[]a){
包名的命名规范:
公司的域名倒写+项目名+模块的名字
12.带包编译:
带包编译:
javac-d./HelloWorld.java
带包运行:
javacom.blues.javabase.day1.HelloWorld
注意:
在同一个包下面不能有同名的类
13.练习:
开发一个Java程序打印出下列信息:
姓名性别年龄毕业学校户籍
14.import的注意事项:
importjava.util.*;
importjava.sql.*;
System.out.println(newjava.util.Date());
15.java的注释:
1.单行注释:
//
2.多行注释:
/**/
3.文档注释
/***/
通过javadoc命令将文档注释提取出来生成java帮助文档:
javadoc-author-version-d./apiHelloWorld.java
16.压缩命令:
Jar-cvffirst.jar完整类名
解压命令:
Jar-xvffirst.jar
运行jar文件中的程序:
java-classpathfirst.jara.b.c.HelloWorld
17.java命令行参数:
publicstaticvoidmain(String[]args){
//打印当前时间
System.out.println(args[0]);
System.out.println(args[1]);
}
运行时:
javacom.blues.javabase.day1.HelloWorldblueswang
18.main方法运行要点:
可执行程序必需要main方法
只能public和static调换位置
args可以是任意的名字
args[0]代表第一个命令行参数
注意:
运行时一定要有命令行参数输入,否则会有数组下标越界异常出现
19.练习:
编程打印出所有命令行的参数。
从命令参数中接收姓名,在程序打印
Helloxxxxx
publicclassDay1_1Homework{
publicstaticvoidmain(Stringarg[]){
Students1=newStudent();
s1.name="
01"
;
s1.age=12;
s1.tell();
};
classStudent{
Stringname;
intage;
publicvoidtell()
{
System.out.println(name+age);
}
Day2:
20.Java标示符:
1,什么是标示符?
在java语言中用来给一个类、变量或方法命名的符号
2,标示符的命名规则:
1.以字母,“_”或“$”符号开头
2.可以包含字母、“_”、“$”和数字符号
3.大小写敏感
4.不能与保留关键字冲突
5.没有长度限制
3.命名规范:
1.类名,接口名:
每个单词的首字母应该大写
2.字段、方法以及对象:
第一个单词首字母应小写,其他单词首字母大写
3.常量:
全部用大写字母表示
4.Java包(Package):
它们全都字母小写
5.命名要做到见名知意
21.关键字列表:
Abstract抽象booleanbreakbytecasecatchcharclass
continuedefault默认值dodoubleelseextends继承enum枚举falsefinalfinallyfloatforifimplements实现接口importinstanceof实例intinterface接口longnativenewnullpackageprivate私有的protectedpublicreturnshortstatic静态的superswitchsynchronized同步的thisthrowthrowstransienttruetryvoidvolatilewhile
保留字:
const,gotoJava中truefalse是boolean类型的字面量
所有的关键字都是小写,friendly,string,sizeof不是java的关键字
22.转义字符描述
\ddd1到3位8进制数所表示的字符(ddd)
\uxxxx1到4位16进制数所表示的字符(xxxx)
\’单引号字符
\’’双引号字符
\\反斜杠字符
\r回车
\n换行
\f走纸换页
\t横向跳格
\b退格
23.java数据类型:
1.基本数据类型(8种)
Byte1、short2、char2、int4、long8、float4、double8
boolean
*java默认浮点数为double
2.引用数据类型
数组、类、接口都属于引用数据类型
24.补码:
原码取反加1
整数在内存中的表示:
1.正整数:
原码
2.负整数:
补码
----------------------------------------------------------------------
对象就像一个充满氢气的气球,我们没有办法直接去得到它,要想对它的使用都必须通过一根连着它的绳子来访问,
这根绳子就是对象的引用。
一根绳子同时只能连着一个气球,就像一个引用同时只能指向一个对象;
可以用多根绳子同时连接一个气球,
也就是可以有多个引用同时指向同一个对象;
如果某个气球没有任何绳子连着它,那它就会飞走,同样,某个对象如果没有引用连接它,
它就会成为垃圾,等着被java的垃圾收集器回收;
如果某根绳子没有连接任何气球,那么它就是一个空引用,对它的访问没有意义。
同样,某个引用如果没有指向对象,那么对它的访问将会抛出NullPointerException
25.练习:
判断下列语句中的a和b的值是否相等:
(1)inta=0;
intb=‘0’;
\\a=0,b=48
(2)inta=0;
charb=‘\u0000’;
\\a=0,b=null
(3)inta=123;
charb='
\u007B'
\\a=123,b={
(4)inta=0x123;
charb=123;
\\a=291,b={
(5)inta=3+‘5’;
charb=’8’;
\\a=56,b=8
(6)inta=‘3’+’5’;
charb=‘8’;
\\a=104,b=8
(7)chara=‘\u0000’;
charb=‘0’;
\\a=null,b=0
26.逻辑运算符:
||!
1.支持短路运算
&
:
左边表达式为false,右边表达式不会被执行
||:
左边表达式为true,右边表达式不会被执行
位运算符:
、|、~、^、<
<
、>
>
、>
1.~:
取反。
1变0,0变1
2.&
按位与。
有0为0
3.^:
按位异或。
相同为0,不同为1
4.|:
按位或。
有1为1
:
将一个数的各二进制位全部右移若干位,移到右端的低位被舍弃,最高位则移入原来高位的值
例如:
a=00110111,则a>
2=00001101
b=11010011,则b>
2=11110100
一个数的各二进制位无符号右移若干位,与运算符>
相同,移出的低位被舍弃,但不同的是最高位都补0。
如:
a=00110111,则a>
b=11010011,则b>
2=00110100
用来将一个数的各二进位全部左移若干位。
高位左移后溢出舍弃,低位补0
例如:
a=00001111,则a<
2=00111100。
\\\使用最快的算法求2的3次方:
2<
2
27.类型转换:
1.隐式自动转换:
将占用空间小的赋值给占用空间大的
2.强制类型转换:
将占用空间大得赋值给占用空间小的
doubled=0.1;
floatf=(float)d;
28.switchcase:
说明:
1.表达式expression可以是以下四种基本数据类型和枚举类型(byte,short,int,char)
2.case子句中的值必须是常量,而且所有case子句中的值应是不同的。
3.case通常与break语句联用,以保证多路分支的正确实现,多个case可以公用一组执行语句。
29.break;
continue;
break语句,跳出它所在的循环语句或switch语句,并从紧跟该循环语句或switch语句后的第一条语句处执行
continue:
continue语句,用来结束本次循环,跳过循环体中下面尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环
30.练习:
1.九九乘法表classA{publicstaticvoidmain(String[]args){for(inti=1;
i<
=9;
i++){for(intj=1;
j<
j++){System.out.print(i+"
*"
+j+"
="
+i*j);
if(i==j){System.out.println();
}}}}}
publicclassDay2_2Homework{
publicstaticvoidmain(Stringargs[]){
for(inti=1;
i<
=9;
i++){
for(intj=1;
j<
j++){
System.out.print("
\t⊙_⊙"
+j+"
+i+"
+j*i);
if(i==j){
System.out.print("
\n"
);
break;
}
}
}
2.利用程序输出如下图形:
*
***
*****
*******
*
publicclassDay2_1Homework{
staticpublicvoidmain(StringARG[]){
System.out.println("
***"
*****"
*******"
Day3:
31.数组声明、初始化:
int[]arr2={1,2,3,4,5};
int[]a=newint[5];
int[]b={1,2,3,4};
int[]c=newint[]{1,2,3,4};
int[]d=newint[3]{1,2,3};
//不合法
------------------------------------------------
char[]缺省值为0所对应的字符
boolean[]缺省值为false
User[]自定义类型数组缺省值为null
求数组的长度:
ar.length属性
32.二维数组循环打印:
for(intm=0;
m<
h.length;
m++){
for(intn=0;
n<
h[m].length;
n++){
System.out.print(h[m][n]);
System.out.println();
33.数组拷贝:
System.arraycopy(Objectsrc,
intsrcPos,
Objectdest,
intdestPos,
intlength);
src-源数组。
srcPos-源数组中的起始位置。
dest-目标数组。
destPos-目标数据中的起始位置。
length-要复制的数组元素的数量
34.练习:
定义一个5*5的二维数组,用来存储某班级20位学员的5门课的成绩;
这5门课
按存储顺序依次为:
coreC++,coreJava,Servlet,JSP和EJB。
(1)循环给二维数组的每一个元素赋0~100之间的随机整数。
(2)按照列表的方式输出这些学员的每门课程的成绩。
(3)要求编写程序求所有学员的某门课程的平均分。
(4)要求编写程序求每个学员的总分,将其保留在另外一个一维数组中。
publicclassDay3Homework{
publicstaticvoidmain(String[]args){
int[]sum1=newint[5];
int[][]arr=newint[5][5];
int[]sum2=newint[5];
String[]name=newString[]{"
A01"
"
A02"
A03"
A04"
A05"
};
\tB01"
+"
\tB02"
\tB03"
\tB04"
\tB05"
for(inti=0;
arr.length;
System.out.print(name[i]);
for(intj=0;
arr[i].length;
arr[i][j]=(int)((Math.random()*0.4+0.6)*100);
\t"
+arr[i][j]);
sum2[i]+=arr[i][j];
System.out.println();
System.out.print("
平均分"
for(intj=0;
arr[0].length;
for(inti=0;
sum1[j]+=arr[i][j];
System.out.print("
+sum1[j]/5);
每个人的总分"
+sum2[i]);
35.方法调用过程:
1.为被调用方法分配临时存储空间
2.将实参复制一份传给形参
3.跳入被调用方法中执行
4.方法体执行完成或遇到return语句,返回主方法,同时被调用方法的临时存储空间被收回
36.编写类的方法:
先抽象再封装
抽象:
抽取出主要内容,忽略次要内容。
主要内容指一类事物所具有的共性
封装:
属性私有化,提供公共的get、set方法
封装的好处:
1.数据更安全,可以在方法内增加验证
2.可以让调用者不去关心实现的细节,重用
37.构造方法:
1.没有返回值
2.方法名与类名一致
3.在创建对象的时候被调用
4.如果本类不写任何构造方法,系统会默认提供一个无参的构造方法。
5.如果自定义了构造方法,那么系统提供的无参构造就会失效
38.方法的重载:
方法名相同,参数列表不同
参数列表:
1.参数类型2.参数个数
系统会根据调用时传递的参数自动找到匹配的同名方法进行调用
39.this关键字:
1.当前类或当前对象
2.this()调用当前类的无参构造,一定要在方法的第一句进行调用,调用的过程只能是单向调用
40.参数的传递:
1.基本数据类型按值传递
2.引用数据类型按引用传递
Day4
41.继承概念:
使用已经存在的类的定义作为基础来建立新类的技术,新类的定义可以增加新的属性和新的方法,但是不能选择性的继承父类
继承优点:
1.可以复用代码,缩短开发周期,节约成本
举例:
汽车类(颜色、牌子、方向盘、轮胎)
轿车类(后备箱)
卡车类(货箱)
汽车->
轿车->
卡车***特化***
轿车(颜色、牌子、方向盘、轮胎、后备箱)
卡车类(颜色、牌子、方向盘、轮胎、货箱)
轿车->
卡车->
汽车***泛化***
42.继承:
子类可以继承父类中被public、protected修饰的属性和方法
private的属性和方法不可以被继承
子类的构造方法第一句一定是调用父类中的构造方法
43.super关键字:
1.调用父类的方法或属性,前提是方法和属性在子类中是可见的
2.super()调用父类中的无参构造
3.在调用父类构造方法的时候必须放在第一句
44.方法的覆盖:
一定发生在继承关系中
1.方法名、参数列表、返回值全部一致
2.子类的访问修饰符大于或等于父类的访问修饰符
3.子类的返回值类型可以是父类返回值类型的子类型(JDK1.5以上版本)
45.多态:
是允许将父对象引用一个子对象的技术
Employeeemployee=manager;
允许父类对象来引用子类对象,但是实际运行过程中调用的是子类的方法或者属性
编译时调用父类方法,运行时调用的是实际