您好,欢迎访问三七文档
Java基础复习Java虚拟机制•一次编译,到处运行(跨平台特性)•不同的平台有不同的虚拟机•JVM本身不是跨平台的环境变量设置path与classpathJDK中bin文件夹的路径JDK中jre\lib\rt.jar的路径数据类型•基本数据类型的优先级•两者的区别基本类型和引用类型•Students;//声明对象•s=newStudent();//实例化一个对象•基本数据类型与引用数据类型的区别•Students=newStudent();•inti;内存nullsstuNonameage0x11580i基本类型:一块内存引用类型:两块内存Java数组——一维数组•数组的下标从0开始•intboy[]等价于int[]boy•声明数组时,不能指定其长度;•须用new为数组的所有元素分配存储空间•可以使用整型变量指定数组的大小0x785BAboy1213100boy[0]boy[1]boy[2]Java数组——二维数组•每一维长度相同:•int[][]array;array=newint[4][3];•int[][]array=newint[4][3];•每一维长度不相同:•int[][]array=newint[3][];array[0]=newint[1];array[1]=newint[3];array[2]=newint[2];Java数组——二维数组•int[][]array;•array=newint[3][];•array[0]=newint[1];•array[1]=newint[3];•array[2]=newint[2];0x26BFarray0x10100x10200x1030array[0]array[1]array[2]整数整数整数整数整数整数Java数组——练习•第一题:正序和倒序输出如下数组:a[]={1,2,3,4,5.6.7}•第二题:找出如下数组中最大的元素和最小的元素:a[][]={{3,2,6},{6,8,2,10},{5},{12,3,23}}课堂练习:•编写程序:•编写一个名为Test的主类,类中只有一个主方法;•在主方法中定义一个大小为50的一维整型数组,数组名为x,数组中存放着{1,3,5,…,99}•输出这个数组中的所有元素,每输出十个换一行;•在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余位置存的是‘#’;•输出这个数组中的所有元素;类和对象•类和对象之间是什么关系?•类由什么构成?•成员变量和局部变量的区别是什么?•什么叫构造方法?构造方法的作用是?•如何创建对象,使用对象?类与对象的基本概念•类与对象的关系:•类是构造对象的模板,是概念,是规范•类是具有相同属性和行为的对象的抽象•对象是类的具体实例类的构成•类的实现包括两部分:•类声明:“class+类名”•类体•成员变量的定义(刻画属性)•成员方法的定义(刻画功能)•基本格式:class类名//类声明{类体的内容}错误!成员变量与局部变量成员变量和局部变量•局部变量:•必须初始化之后才能使用•成员变量:•在定义时可以对其初始化•如果没有初始化,仍可直接使用。因为Java会使用默认值对其初始化变量类型默认取值byte0short0int0long0Lchar‘\u0000’booleanFalsefloat0.0fdouble0.0d引用类型null对象的创建和使用•Students;//声明对象•s=newStudent();//实例化一个对象•引用成员变量•对象名.成员变量名•s.age=23;•方法的使用•对象名.方法名(参数列表)•s.haveCourse()构造方法(1)•用途:一种特殊的方法,用于给新对象分配实体(内存)•命名:名字必须与所在的类的名字完全相同•构造方法没有返回值,也不能有返回值•必须和new操作符一起使用publicclassStudent{//成员变量定义StringstuNo;Stringname;intage;//构造方法Student(){stuNo=“20709563”;name=“王小二”;}}publicclassTest{publicstaticvoidmain(String[]args){Students;s=newStudent();}}构造方法(2)•当一个类中没有定义构造方法时:编译器为其增加一个默认的构造方法(没有形参)•如果一个类里定义了一个或多个构造方法时:java编译器将不提供默认的构造方法publicclassA{publicstaticvoidmain(Stringargs[]){//声明对象p1和p2Pointp1,p2;//为对象分配内存p1=newPoint();p2=newPoint(10,20);}}classPoint{intx,y;Point(){x=0;y=0;}Point(inta,intb){x=a;y=b;}}数组的引用和实体publicclassExample2_3{publicstaticvoidmain(Stringargs[]){inta[]={100,200,300};intb[]={10,11,12,13,14,15,16};b=a;b[0]=123456;System.out.println(数组a:+a[0]+,+a[1]+,+a[2]);System.out.println(数组b:+b[0]+,+b[1]+,+b[2]);System.out.println(数组b的长度:+b.length);}}0x785BAa100200300a[0]a[1]a[2]0x785DCb10111213141516b[0]b[1]b[2]b[3]b[4]b[5]b[6]0x785BA123456b[0]b[1]b[2]对象的引用和实体0xAB0xDDp1p21216xy68xy0xDD方法的参数传递•基本数据类型传递的是该值本身如果改变参数变量所引用的实体,就会导致原变量的实体发生相同的变化,因为两个变量具有相同的引用,指向同一个实体•引用类型传递的是对对象的引用,而不是对象本身基本实参基本形参引用型实参引用型形参实体方法的参数传递运行结果:34方法的参数传递publicclassArrayTest{int[]a=newint[2];publicstaticvoidmodify(int[]b){b[0]++;b[1]--;}publicstaticvoidmain(String[]args){ArrayTestat=newArrayTest();at.a[0]=5;at.a[1]=5;modify(at.a);System.out.println(at.a[0]);System.out.println(at.a[1]);}}64课堂练习:•创建一个叫做圆的类:•属性:半径(double)•功能:获取半径、修改半径、计算面积、计算周长•编写一个能为圆的半径赋值的构造方法;•创建一个叫做圆柱的类:•属性:底圆(圆)、高(double)•功能:获取底圆半径、修改底圆半径、计算表面积、计算体积•编写一个能为圆柱所有属性赋值的构造方法;•创建主类:•创建一个圆对象,半径为10,输出该圆的面积与周长。•使用创建的圆对象作底圆,创建一个圆柱对象,高为20。•求圆柱的底圆半径、表面积和体积;•将圆柱的底圆半径修改为20;•再次求圆柱的底圆半径、表面积和体积;封装---包•定义:Java允许把多个类收集在一起成为一个集合,称作包(package)•语句:package+包名•作用:将源文件定义的类打包•个数:最多出现一次•位置:Java源文件的第一条语句;•语句:import+包名.类名•作用:引入某个包中的类•个数:语句个数不限,可引入多个类•位置:package语句和类的定义之间封装---包•在面向对象的编程思想中,类的共享和复用很重要•为避免一切重头做起,在编写Java程序时,除了自己编写类之外,有时还会引用其他包中的类•比如:Java提供的许多类,或自己曾经编过的某些类•JDK提供的类库非常强大,共130多个包:•java.awt:图形、文本窗口GUI类•java.lang:Java的核心类,包括String,System,Math等•java.io:包含一些输入和输出类•java.net:实现网络功能的类•java.util:包含一些有用的数据类型,如日期和时间等公有类和友好类(包内包外)•类声明时,如果在关键字class的前面加上public,就称这样的类为公有类。•任何一个类都可以使用公有类•类声明时,如果不加任何修饰符,就称这样的类为友好类。•只有在同一个包中的类才能够使用友好类(即便使用import语句也不行)。publicclassA{……//公有类}classA{……//友好类}封装---访问权限类的设计者把类设计为一个黑匣子,使用者只能使用类中定义的公有成员(方法),这些共有成员就是类与外界沟通的接口;封装的目的:•使用者必须通过类的外部接口访问类中的数据•隐藏类的实施细节,保护数据不受破坏•增加代码的可维护性与外界沟通的接口封装---访问权限•访问权限从高到低的顺序是:publicprotected友好private•类的修饰符只有public,不能用protected和private来修饰类课堂练习•在包a中新建一个类A,在类A中有一个intadd(intm)方法,用来求1+2+…+m的和。•在包b中新建一个类B,在类B中有一个intcheng(intn)方法,用来求n!的结果。•在包c中新建一个主类C,调用A、B中的方法输出1+2+…+30的和,以及10!的计算结果。继承•在Java类的声明中,使用关键字extends实现继承。由已有的父类派生新的子类,格式如下:class子类名extends父类名{子类类体;}•例如:注:Object类是java.lang包中的一个类:如果一个类的声明中没有使用extends关键字,该类就被系统默认为是Object类的直接子类。继承•父类和子类数量上的对应关系?•子类会继承父类的哪些成员?•当子类和父类在同一个包中,子类继承父类中不是private修饰的变量和方法,继承的成员变量和方法的访问权限不变。•当子类父类不在同一个包中,子类继承父类的受保护(protected)成员和公有(public)成员,不能继承友好成员和私有成员private•什么叫做对象的上转型?•将子类对象的引用赋值给父类的对象多态•定义:程序中多个名字相同的方法共存的现象,多态是面向对象程序设计的核心特性;•优点:提高了程序的抽象性,突出Java语言的继承性•分类:•重载:一个类中存在多个同名方法•方法名字相同,形式参数(类型或个数)不同•与返回值类型是否相同没关系•重写:子类覆盖父类的同名方法•返回值类型、方法名字和形式参数必须全都相同多态(方法的重载)classCompute{voidadd(){System.out.println(Noparameters);}voidadd(inta,intb){intresult=a+b;System.out.println(Int:+result);}voidadd(inta,intb,intc){intresult=a+b+c;System.out.println(Int:+result);}voidadd(floata,floatb){floatresult=a+b;System.out.println(Float:+result);}}classExample{publicstaticvoidmain(Stringargs[]){Computesum=newCompute();sum.add();sum.add(1,2);sum.add(1.1f,2.2f);sum.add(1,2,3);}}NoparametersInt:3Float:3.3000002Int:6多态(方法的重写)c
本文标题:Java基础总复习
链接地址:https://www.777doc.com/doc-4358996 .html