java课堂讲义文档格式.docx
《java课堂讲义文档格式.docx》由会员分享,可在线阅读,更多相关《java课堂讲义文档格式.docx(40页珍藏版)》请在冰豆网上搜索。
行为:
吃睡玩想===========>
成员方法=========>
类
3、对象:
是类的一个实例,它属于一个类
创建一个对象做了几件事情?
Strings1="
hello"
;
Strings2=newString("
);
创建了几个对象?
4、java的命名规则见名知意
类名首字母大写classPersonClock
成员变量/方法小写intheight;
getName();
setName();
驼峰命名法
常量大写intWIDTH=300;
5、一个.java文件就是一个编译单元.一个编译单元里面,只能有一个public修饰的类,文件名必须和public修饰的类的类名相同.但,类的功能要单一化.
6、java的基本数据类型
类型字节数默认值封装类
byte10java.lang.Byte
char2'
\u0000'
Character
int40Integer
float40Float
double80Double
boolean1falseBoolean
1byte=8bit;
floatf=2.3f;
2.3f===>
float
2.3===>
double
doubled=2.3f;
floatf=2.3;
floatf=(float)2.3;
低精度向高精度转化,会自动类型转化(向上造型)
高精度向低精度转化,要强制类型转化(向下造型)
注:
java中的boolean只有true和false,不像C中0表示假,非0表示为真
while(true){}
while(1==1){}
String定义字符串它不是基本数据类型是类类型默认值null
7、标识符:
由字母、数字、下划线和$符号组成,但不能以数字开头的字符串。
不能是保留字。
ifcasewhileelse....
$ad34_sdf324325_sdfgotoconst
java中有哪些关键字保留字
8、方法的定义:
修饰符返回值类型方法名(参数表){
方法体
}
voidf(){
publicintgetNumber(Strings,inti){
return2;
9、运算符:
算术%++--5%22%5-2%52%-5-2%-52.3%5
y+=x++;
y=y+x,x=x+1;
先运算再自加
y+=++x;
x=x+1,y=y+x;
先自加再运算
关系>
<
==!
=
赋值=+=-+%=/=
逻辑&
&
||!
&
|
假&
真真&
假x=3;
3>
4&
x++>
1
真||假假||真x=3;
2||x++>
条件表达式1?
表达式2:
表达式3
if(xxx){
}else{
}
10、java中的数组:
和C中的不一样,C中的数组是一个简单的内存块.
是对象,也是引用类型.同样是new关键字
inta[]={1,2,3,4,5};
int[]a=newint[6];
a[0]=1;
a[1]=2;
a[6]errorArrayIndexOutofBoundsException数组越界异常
int[]a=newint[]{1,2,3,4,5};
int[]a={1,2,3,4,5};
String[]s=newString[5];
String[]s1=newString[]{"
abc"
"
df"
gf"
};
s1[1].concat(s[2]).toUpperCase();
Animal[]an={newDog(),newPerson(),newPig()};
for-each
下标法
编译时报错,一定是语法错误;
运行时报错,一定是异常;
11、java的流程控制语句
if(表达式){}ture/false
if(){
}else{
if(){
}elseif(){
switch(变量)只能是以下类型bytecharshortint
case1:
xxbreak;
case2:
default:
xx
while(表达式){}for循环for-each循环do{表达式}while();
continue;
break;
break和continue语句
break语句的功能:
用于从循环体内跳出循环体,即提前结束循环。
例:
计算r=1到r=10的圆面积,当面积大于100时结束循环,
使用要点:
break只能用在循环语句和switch语句中。
功能:
结束本次循环,接着判定下一次是否执行循环。
continue与break的区别:
continue直结束本此循环,而break终止本层循环.
例:
把100~200之间的不能被3整除的数输出.
作业1:
1、jdk环境变量的配置,dos命令的熟练运用
2、定义一个矩形类Rectangle,声明两个方法分别能求得其周长和面积
3、定义一个Watch类,声明两个方法分别能设置时间和显示时间
4、String了解方法
Stringstr="
2010-5-210:
53:
30"
=======>
2010524105330
2013-12-0217:
08:
30
Lesson2
1、值传递和地址传递
2、构造函数:
<
1.函数名与类名相同
2.没有返回值类型,从某种意义上来讲,返回的是这个类的对象
3.我们在创建对象的时候调用构造函数,用new关键字来调用Rectrec=newRect();
4.作用:
创建和初始化该类的对象,给成员变量赋初值
5.系统提供给我们一个默认的无参构造函数.如果我们定义了新的构造函数,默认的构造函数就不存在了.
6.我们可以用this这个关键字来调用兄弟构造函数,此句必须放在第一句.
3、this的3用法:
4、String类中方法的使用以及String、StringBuffer和StringBuilder的区别:
String定义的对象是不可修改的。
StringBuffer同步效率低
StringBuilder不同步效率高
StringBuffersb=newStringBuffer("
StringBuffer向String转化
方法1:
hehe"
Stringstr=sb.toString();
方法2:
Stringstr1=newString(sb);
5、基本数据类型的封装类的运用:
Integer类中的两个方法
parseInt()toString()
DoubleFloatCharacterBoolean
整形==3种===>
字符串===2种==>
整形IntegerString
6、命令行参数:
命令行参数是程序执行中紧跟在程序名后面的信息。
javaTest5helloeveryone!
它们作为字符串存储在传递给main()的String数组中,所有的命令行参数都是以字符串形式传递的。
静态加载(缺点):
在编译的时候就要把这个类对象加载进来,如果这个类不存在,就要报错.
7、关键字:
packageimport
包:
相当于目录(文件夹)
package打包范围大--->
小com.gem.test;
import导包java.lang包下的类是不需要导包的
同时使用时应注意顺序:
对于.java文件而言,包名就是包名;
对其进行编译,一定要在当前包下。
对于.class文件而言,包名是.class文件的前缀名,运行时,要退出当前包。
面向对象四大特性:
多态继承封装抽象
8、方法重载(多态性的体现)overload
在一个类中,存在着这样一组方法:
方法名相同,参数表不同(类型不同,个数不同,顺序不同),与返回值类型无关
9、构造函数重载(多态性的体现)
10、四大访问修饰符(publicprotectedprivatedefault)
public公共的同一包不同包
protected受保护的同一包不同包(子类)
default缺省的只能在同一包下相互访问
private私有的只能在类的内部被访问
定义类的修饰符:
publicdefault
在一个类中有哪些元素
成员变量方法构造函数
作业2:
1、利用String类中的方法,将一个字符串倒叙输出(熟练使用String类中的方法)
2、从键盘输入两个值,求得其最大公约数、最小公倍数
3、定义一个数组,数组的大小是一个随机数,数组中的元素也都是随机数
4、随机产生一个随机数,然后接受键盘的输入值,猜大猜小,直到猜对为止
Math.random();
Scannerin=newScanner(System.in);
(练习的代码打包在lesson4里面)
Lesson3:
1、static关键字
(1、来由:
静态的东西是大家共有的,且只被加载(初始化)一次.
静态的东西是属于类的,所以可以用类名直接访问.
代码举例1:
publicclassTest1{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
f();
Test1test=newTest1();
test.g();
publicstaticvoidf(){
System.out.println("
publicvoidg(){
world"
(2、静态的方法只可以访问静态成员(变量or方法),不能访问非静态成员;
非静态的方法可以访问静态成员
知识点代码举例1:
classStudent{
Stringname;
intage;
staticStringroom="
G01"
publicvoidstudy(){
stduy..."
sleep();
publicstaticvoidsleep(){
System.out.println(room);
//study();
error
publicclassTest2{
Studenttom=newStudent();
tom.study();
System.out.println(tom.name);
//tom.sleep();
不提倡
Student.sleep();
//Math.max(3,66);
System.out.println(Student.room);
(3、类的初始化顺序:
先初始化静态成员===》再调用构造函数来初始化非静态成员(非静态成员初始化执行完毕之后,构造函数才能执行结束)
classA{
inti;
{
i=1;
aaa"
static{
bbb"
A(){
ccc"
publicclassTest3{
newA();
(4、..........静态的方法中不能以任何方式引用this或super关键字
(5、*当构造函数私有时,我们如何在类的外部创建该类的实例(单例模式)
单例模式代码举例:
classSingleTon{
privatestaticSingleTonst;
//私有的构造函数
privateSingleTon(){}
publicvoidshow(){}
//synchronized同步效率低安全的
//静态同步的方法,返回该类的对象
publicstaticsynchronizedSingleTongetInstance(){
//SingleTonst1=newSingleTon();
if(st==null){
st=newSingleTon();
}
returnst;
publicclassTest13{
//SingleTonst2=newSingleTon();
2、继承(extends)
继承:
是OOP(ObjectOrientedProgramming)编程技术的一块基石。
它意味着基于一个已经定义好的类创建一个新的类,新的类将以某种方式扩展原有的类。
体现的是is-a的关系。
OOAanalyseOODdesign
在OOP的编程中,继承意味着新的类来自父类,且每个类都有一个直接的父类。
父类或者显示定义的,或者隐式规定的,如果没有显示地定义父类,那隐含的父类就是Object类。
好处:
代码的可重用性缺点:
依赖性太强(低藕合高内聚)
继承:
就是一个类得到另一个类所有属性的过程。
私有成员有没有被继承过来?
有!
构造函数有没有被继承过来?
为什么?
没有!
类,继承都是单继承why?
classAnimal{
privateStringfood="
KFC"
Animal(){}
publicvoideat(){
System.out.println(this.food);
publicvoidsleep(){}
classPersonextendsAnimal{
Person(){}
publicvoidthink(){}
publicvoidspeak(){}
publicclassTest5{
Animalaa=newAnimal();
aa.eat();
aa.sleep();
Personpp=newPerson();
pp.eat();
pp.sleep();
pp.think();
pp.speak();
//System.out.println(pp.food);
预习:
classAextendsObject
{
a.equals();
a.toString();
3、super关键字的3种用法(this对照起来记忆)
(1)调用父类无参构造函数;
(2)调用父类中的成员方法;
(3)访问父类的成员属性;
classVehicle{
Stringname="
Vehicle(){
super();
Vehicle(inti){
this();
//调用兄弟构造函数
--------"
publicvoidmove(){
System.out.println(this.name);
publicvoidf(){
this.move();
//move();
classCarextendsVehicle{
kfc"
Car(){
//作用:
调用父类的无参构造函数
Car(inti){
super(i);
++++++++"
publicvoiddrive(){
//访问本类中的name属性
System.out.println(super.name);
//访问父类中的name属性
super.move();
调用父类中的成员方法
publicclassTest6{
Carcc=newCar(3);
cc.drive();
知识点代码举例2:
classFruit{
intprice;
//publicFruit(){}
publicFruit(Stringname,intprice){
this.name=name;
this.price=price;
classAppleextendsFruit{
Apple(Stringname,intprice){
super(name,price);
publicclassTest7{
Appleaa=newApple("
red"
5);
System.out.println(aa.name+"
"
+aa.price);
Lesson4:
1、了解Object类中的equals()和toString()
String、Integer类中的equals()
父类:
基类
子类:
派生类
Object类是所有类的父类.
equals()比较的是什么?
?
输出一个对象:
类名@内存地址,就相当于输出这个对象toString()值;
知识点的代码举例1:
classC{
inti=1;
@Override
publicStringtoString(){
return"
publicclassTest8{
Cc1=newC();
Cc2=newC();
//比较的是两个对象的地址
System.out.println(c1==c2);
//调用的是Object类中的equals(),比较的是两个对象的地址
System.out.println(c1.equals(c2));
//输出一个对象,就是输出该对象的toString()的返回值
System.out.println(c1);
System.out.println(c1.toString());
知识点的代码举例2:
publicclassTest9{
Strings2="
System.out.println(s1==s2);
Strings3=newString("
System.out.println(s1==s3);
//String类中的equals()比较的是两个对象所指的内容
System.out.println(s1.equals(s2));
System.out.prin