您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > java基础理论知识串讲
Java基础理论知识串讲第一章Java概述Java程序的编写、编译和执行编写代码可使用任何文本编辑软件编写,比如记事本源代码文件的扩展名为.java编译使用JDK的编译命令javac进行编译如:javacHello.java编译后生成扩展名为.class的字节码运行使用JDK的解释器java运行如:javaHelloapplicationvs.applet不同点Javaapplication由Java解释器独立运行字节码程序中包含main方法Javaapplet不能独立运行,字节码必须嵌入HTML文档(有applet/applet标记)源程序必须是java.applet.Applet类或javax.swing.JApplet类的子类一个简单的application//Welcome.javapublicclassWelcome{publicstaticvoidmain(String[]args){System.out.println(“HelloWorld!”);}}源文件名要和该public类相同注意String和System要大写编写Java源程序的注意事项Java语言区分大小写,包括文件名源文件的名字必须和源代码中被public修饰的类相同,如果没有public类可以可以任意命名(不推荐)。源文件扩展名必须为.java第二章基本语法标识符是用户定义的用于表示变量名、类名、接口名、方法名、方法的参数名等符号。标识符的命名规则由字母、数字、下划线_、美元符号$组成首字母不能是数字不能是保留字(50个)标识符区分大小写练习下列哪些是合法的标识符:a++,4abc,_test,class123abc,$test,a--,Mr.wangimport,abc#d,半径,a1基本数据类型Java中共八种基本数据类型:数值型(四种整型,两种浮点型)字符型(char一种)布尔型(boolean一种)数值数据类型类型名称位数表示范围byte8bit-128~127short16bit-32768~32767int32bitlong64bitfloat32bit七位小数(单精度浮点数)double64bit十五位小数(双精度浮点数)char16bit16位的Unicode编码类型转换精度由高到底排序:doublefloatlongintshortbyte数值类型转换总可以将低精度的值赋给高精度类型的变量。比如:doublei=10;但是,如果不进行强制类型转换,就不能将高精度类型的值赋给低精度类型的变量。类型转换类型转换是一种操作,它把一种数据类型的值转换成另一种数据类型。用于由高精度向低精度要进行强制类型转换;例如:floatf=10.1;(错,浮点型数默认为double型。)floatf=(float)10.1;inti=(int)f;数值类型转换Java中当两个类型不同的运算对象进行二元运算时,Java自动把精度较低的类型转换成另一个精度较高的类型。见书17页类型转换基本规则算术运算符算术运算符包括:+,-,*,/和%。整数除法的结果是整数,如5/2=2而不是2.5,1/2=0。运算符%得出除法的余数,如5%2=1。赋值运算符基本赋值运算符(=)复合赋值运算符(如+=)注意:赋值运算符=的左边只能是变量,不能是表达式,而右边可以是数值也可以是表达式如a=a+3(正确)a=b=2(正确)a=a+5=9(错误,=的左边不能是表达式)增量运算符和减量运算符前置增量/减量运算符:变量先加1或减1,再参与表达式中的运算。++x或者--x后置增量/减量运算符:变量先参与表达式的运算,再加1或减1。x++或者x--比较运算符运算符名称例结果小于12true=小于等于1=2true大于12false=大于等于1=2false==等于1==2false!=不等于1!=2true逻辑运算符运算符名称描述!非逻辑否定,取反&,&&与逻辑与,并且|,||或逻辑或,或者^异或逻辑异或,排同if-else语句if(布尔表达式){布尔表达式为真时执行的语句(组);}else{布尔表达式为假时执行的语句(组);}switch语句Java提供switch语句来有效的处理多重条件。switch(表达式){case值1:语句组1;break;case值2:语句组2;break;………………case值N:语句组N;break;defalut:缺省语句组;}注意:表达式结果类型:byte,short,int或者charwhile循环while循环的语法如下:while(循环条件){//循环体;}do循环do循环是while循环的变体。do{//Loopbody;}while(循环条件);(注意最后的分号!)for循环for循环的语法如下:for(循环变量初始化;循环条件;调整语句){//循环体;}for循环如果循环条件省略,就意味着条件为真。下述语句也是正确的for(;;){}break和continue关键字语句break和语句continue,可以用在循环语句中为循环提供附加控制。break:立刻终止包含它的最内层循环。continue:只结束当前迭代,将程序控制转移到循环的下一次迭代。要求会封装方法不要把所有的代码都写在main方法中,main方法一般都是进行调用方法的。比如编写方法判断一个数是否是水仙花数。(考察大家编写实现某功能的方法,并在main方法中调用该方法)第三章面向对象思想对象对象的要素对象的属性(特征、状态、组成)对象的行为(改变状态、传递消息)对象的标识(每个对象都有个标号)对象和类型之间的关系对象是具体的,类型是抽象的创建的是类型,使用的是对象第四章类与对象类的定义[修饰符]class类名{属性定义构造方法定义方法定义}属性定义语法:[]表示可有可无[修饰符]类型属性名=[初值];类型可以是任何类型,包括8种基本数据类型或自定义的引用类型(即属性可以由一个类的对象充当)。属性有默认值。方法定义语法:[修饰符]返回值类型方法名(参数列表){语句(组);return语句;}构造方法—用于对象的初始化构造方法名与类名一致构造方法没有返回值类型如果没有定义构造方法,系统会生成一个默认的无参的构造方法构造方法只能用new在创建对象时调用,不能通过对象名调用练习定义一个矩形类,该类有长和宽两个属性,试定义构造方法,包括:默认无参的构造方法,为长和宽指定初值的构造方法。创建对象创建对象的语法:类名对象名//这是对象的声明对象名=new类名();//真正创建对象调用对象属性和方法的语法:对象名.属性名对象名.方法名练习定义一个教师类,属性有教师的名字,性别,年龄,教师都是有头发的且默认是黑颜色的。试定义构造方法及显示教师基本信息的方法,并定义一个对象将信息显示出来。方法的重载(概念一定要理解掌握)重载:一个类中如果同时存在多个方法名相同,参数列表不同的方法,则他们之间的关系称为重载。要求重点掌握该知识点方法重载例:intmax(inta,intb)doublemax(doublea,doubleb)intmax(inta,intb,intc)要点:方法名相同、参数列表不同(包括参数数目,参数出现的顺序或参数的类型不同)。返回值类型可以相同也可以不同。构造方法的重载构造方法的重载与方法的重载相同关键字thisthis代表类的当前对象利用“this.”可以调用当前对象的成员this可以实现构造方法的调用利用this(参数)可以调用构造方法必须写在构造方法的第一条对象做方法的参数基本数据类型做方法的参数传递的是数值。对象也可做方法的参数传递的是引用(即地址)变量和属性的作用域属性是定义在类中所有方法外的变量(有默认值);而方法内定义的变量是局部变量(无默认值)。属性不管在何处声明,它的作用范围是整个类;局部变量的使用范围是从声明它的那一点到距离它最近的右大括号之间。包(包中放着好多类)声明包的方法package包名称;注意:package必须写在程序的第一条引入包中的类使用其他包中的public类常用是:关键字import包名.类名;如:importjava.applet.Applet;也可以引入整个包例如:importjava.util.*;访问控制修饰符(要掌握)类成员的访问控制修饰符public:包内+包外可访问protected:包内+包外子类可访问默认:包内可访问private:类内可访问访问器方法设置方法voidset属性名(属性类型的参数)比如:对属性radiusvoidsetRadius(doubleradius)获取方法属性类型get属性名()比如:doublegetRadius()static静态属性用static修饰的属性,也称为类属性用于描述一类对象共享的属性比如:员工的最低工资,学生的学校名称等等static静态方法用static修饰的方法,也叫类方法写静态方法时要注意,方法中不能访问非静态成员注意:不加static修饰的属性或方法,必须用对象去调用。被static修饰的属性或方法可通过类名直接调用,也可通过对象调用比如:Teacher例子中可设学校名的属性为静态的,试考虑可以如何调用该属性。第5章继承继承的语法[修饰符]class子类名extends父类名{类体;}例如:classAppleextendsFruit{…}【注】Java只支持类单重继承,即只有一个父类的继承关系要点在继承中:子类可以得到父类的属性和方法。子类可以添加新的属性和方法。子类可以重新定义父类的属性和方法。(子类中的内容比父类丰富)属性隐藏子类可以定义与父类同名的属性,称为属性隐藏。即子类可以重新定义父类的属性。调用属性的规则:先在当前类中找,如果没有再到其父类中找。如果想要调用被隐藏的父类属性,静态属性可以使用“类名.属性名”;非静态属性可以用“super.属性名”用法见课后习题P156,10题方法的覆盖在子类中可以定义与父类方法头相同的方法,称为方法的覆盖。也可以说,通过方法覆盖,子类可以重新定义父类的方法。方法覆盖要注意:子类在重新定义父类中的已有方法时,应保持和父类中该方法相同的方法头,即有完全相同的方法名、返回值类型和参数列表。方法覆盖时,子类方法不能缩小父类方法的访问权限。比如:父类的方法如果是protected,子类方法只能是protected或者public继承关系中的构造方法在创建子类对象时,先调用父类构造方法,然后再调用子类构造方法默认情况下,子类调用父类无参的构造方法super在子类中调用父类的属性和方法super指当前类的父类对象,所以不能在静态方法中使用。在子类构造方法中显示调用父类的构造方法。必须写在子类构造方法的第一条。总结:this和super的用法this代表当前类的对象;super代表当前类的父类对象。this可以调用当前类当中的其他构造方法,而super可以在子类中调用其父类中的构造方法。注意:this和super都不能用在static修饰的方法内;并且this和super不能同时使用,因为都需要放在第一条语句上。Final使用要点final可以修饰:属性或局部变量,不能被修改(常量)方法,不能被覆盖(最终方法)类,不能被继承(最终类)abstract使用要点abstract类不能实例化,只能用于继承abstract方法只有方法头,没有方法体只能定义在抽象类中注意:抽象类中可以有具体方法抽象类中的抽象方法在其非抽象子类中必须实现(覆盖)父子类对象的使用和转化父子类的对象在某些情况下可以相互转化。转化原则子类对象可以当作父类对象使用父类对象不能当作子类对象使用如果父类引用实际指向的
本文标题:java基础理论知识串讲
链接地址:https://www.777doc.com/doc-3266506 .html