S1java笔记作业1.docx
- 文档编号:9752619
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:61
- 大小:43.24KB
S1java笔记作业1.docx
《S1java笔记作业1.docx》由会员分享,可在线阅读,更多相关《S1java笔记作业1.docx(61页珍藏版)》请在冰豆网上搜索。
S1java笔记作业1
S1笔记
Day0:
1.异常与错误:
1.异常是程序在执行过程中出现的中断正常指令执行的事件。
2.错误是偏离可接受代码的一个动作或实例。
2.overload和overrid的区别
1.Overload方法重载:
如果在一个类
2.它们有不同的参数或参数类型,则该方法称为方法的重载。
3.Override方法重写:
如果子类中定义某个方法与其父类有相同的名称和参数,则该方法被重写。
3.常见异常
1.空指针异常类:
java.lang.nullPointerException
2.数组下标越界异:
java.lang.arrayIndexOutOfBoundsException
3.类型强制转换异常:
java.lang.classCastException
4.数学运算异常:
java.lang.arithmeticexception
5.操作数据库异常:
java.sql.SQLException
6.没有访问权限异常:
java.lang.illegalaccessexception
7.字符串转换为数字异常:
java.lang.numberFormatException
4.静态变量和非静态变量的区别
1.静态变量:
用关键字static修饰的成员变量称作静态变量或类变量,是与类相关联的数据变量,类变量不仅可以通过某个对象访问也可以直接通过类名访问,静态变量被相关的对象共享。
2.非静态变量:
没有使用static修饰的成员变量称作非静态变量;仅仅是和相应对象关联的变量,改变其中一个对象的实例变量不会影响其它对象的这个实例变量,且必须通过对象访问。
5.静态方法和非静态方法有什么区别:
1.静态方法中不用this是无法引用除自己方法体中定义的成员和参数以外的非静态变量或者方法的。
2.静态方法是不允许被子类重写的,但是子类可以重载父类的静态方法。
3.子类也不可将父类中的非静态方法重写为静态方法。
6.final和finally和finalize的区别
1.final-修饰符(关键字)被声明为final的类,不能再派生出新的子类,不能作为父类被继承。
被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。
final方法只能使用,不能重写。
2.finally-在异常处理时提供finally块来执行任何清除操作。
如果抛出一个异常,那么相匹配的catch子句就会执行,然后控制就会进入finally块(如果有的话)。
3.finalize-方法名。
finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。
子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。
finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。
|||&&&
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>>>2=00001101
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<=9;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<=9;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("*");
System.out.println("***");
System.out.println("*****");
System.out.println("*******");
System.out.println("*****");
System.out.println("***");
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 for(intn=0;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"}; System.out.println("\tB01"+"\tB02"+"\tB03"+"\tB04"+"\tB05"); for(inti=0;i System.out.print(name[i]); for(intj=0;j arr[i][j]=(int)((Math.random()*0.4+0.6)*100); System.out.print("\t"+arr[i][j]); sum2[i]+=arr[i][j]; } System.out.println(); } System.out.print("平均分"); for(intj=0;j for(inti=0;i sum1[j]+=arr[i][j]; } System.out.print("\t"+sum1[j]/5); } System.out.print("\n"); System.out.print("每个人的总分"); for(inti=0;i System.out.print("\t"+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; 允许父类对象来引用子类对象,但是实际运行过程中调用的是子类的方法或者属性 编译时调用父类方法,运行时调用的是实际
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- S1java 笔记 作业