面向对象学生常问问题总结.doc

上传人:wux****ua 文档编号:9634954 上传时间:2020-04-06 格式:DOC 页数:24 大小:188KB
返回 下载 相关 举报
面向对象学生常问问题总结.doc_第1页
第1页 / 共24页
面向对象学生常问问题总结.doc_第2页
第2页 / 共24页
面向对象学生常问问题总结.doc_第3页
第3页 / 共24页
点击查看更多>>
资源描述
面向对象前两天学生常问的问题总结什么是方法?* A:为什么要有方法* 提高代码的复用性(可以将一个功能反复调用,不需要重复写很多次代码) * B:什么是方法* 完成特定功能的代码块。 * C:方法的格式* 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2.) 方法体语句;return 返回值; * D:方法的格式说明* 修饰符:目前就用 public static。后面我们再详细的讲解其他的修饰符。* 返回值类型:就是功能结果的数据类型。* 方法名:符合命名规则即可。方便我们的调用。* 参数:(根据实际需求,可以有参数,也可以无参数)* 实际参数:就是实际参与运算的。* 形式参数;就是方法定义上的,用于接收实际参数的。* 参数类型:就是参数的数据类型* 参数名:就是变量名* 方法体语句:就是完成功能的代码。* return:结束方法的。* 返回值:就是功能的结果,由return带给调用者。class Demo1_Method public static void main(String args) /* C:方法的格式* 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2.) 方法体语句;return 返回值; * D:方法的格式说明* 修饰符:目前就用 public static。后面我们再详细的讲解其他的修饰符。* 返回值类型:就是功能结果的数据类型。* 方法名:符合命名规则即可。方便我们的调用。* 参数:* 实际参数:就是实际参与运算的。* 形式参数;就是方法定义上的,用于接收实际参数的。* 参数类型:就是参数的数据类型* 参数名:就是变量名* 方法体语句:就是完成功能的代码。* return:结束方法的。* 返回值:就是功能的结果,由return带给调用者。 */如何写一个方法?/* A:如何写一个方法* 1,明确返回值类型(要返回什么数据?这个功能到底要不要返回值?)* 2,明确参数列表 (需要你传入什么数据?根据数据类型来写参数)* B:案例演示* 需求:求两个数据之和的案例* C:方法调用图解*/class Demo2_Sum public static void main(String args) /*int a = 10;int b = 20;int sum = a + b;System.out.println(sum);int c = 30;int d = 40;int sum2 = c + d;System.out.println(sum2);*/int sum = add(10,20);System.out.println(sum);/add(30,40);/有返回值方法的单独调用,没有意义System.out.println(add(30,40);/这样调用是可以,but如果需要用这个结果不推荐这样调用/盘子 = 炒菜(地沟油,苏丹红,镉大米,烂白菜);/*求两个整数的和1,整数的和结果应该还是整数2,有两个未知内容参与运算如何写方法1,明确返回值类型2,明确参数列表* 修饰符:目前就用 public static。后面我们再详细的讲解其他的修饰符。* 返回值类型:就是功能结果的数据类型。* 方法名:符合命名规则即可。方便我们的调用。* 参数:* 实际参数:就是实际参与运算的。* 形式参数;就是方法定义上的,用于接收实际参数的。* 参数类型:就是参数的数据类型* 参数名:就是变量名* 方法体语句:就是完成功能的代码。* return:结束方法的。* 返回值:就是功能的结果,由return带给调用者。*/public static int add(int a,int b) /int a = 10,int b = 20int sum = a + b;return sum;/如果有返回值必须用return语句带回/*盘子 炒菜(油,调料,米,菜) 炒菜的动作return 一盘菜;*/方法怎么调用的?* A:方法调用(有具体返回值)* a:单独调用,一般来说没有意义,所以不推荐。* b:输出调用,但是不够好。因为我们可能需要针对结果进行进一步的操作。* c:赋值调用,推荐方案。* B:案例演示* a:方法不调用不执行* b:方法与方法是平级关系,不能嵌套定义* c:方法定义的时候参数之间用逗号隔开* d:方法调用的时候不用在传递数据类型* e:如果方法有明确的返回值,一定要有return带回一个值/* A:案例演示* 需求:键盘录入两个数据,返回两个数中的较大值* B:案例演示* 需求:键盘录入两个数据,比较两个数是否相等 */import java.util.Scanner;class Test1_Method public static void main(String args) Scanner sc = new Scanner(System.in);/创建键盘录入对象System.out.println(请输入第一个整数:);int x = sc.nextInt();/将键盘录入的整数存储在x中System.out.println(请输入第二个整数:);int y = sc.nextInt();/将键盘录入的整数存储在y中/int max = getMax(x,y);/System.out.println(max);boolean b = isEquals(x,y);System.out.println(b);/*返回连个整数的较大值1,明确返回值类型 int2,明确参数列表 int a,int b*/public static int getMax(int a,int b) return a b ? a : b;/*判断两个整数是否相等1,明确返回值类型 boolean2,明确参数列表 int a,int b*/public static boolean isEquals(int a,int b) /isEquals 是否相等return a = b;return 关键字有什么用?作用一:写在方法里面,直接终止方法,方法不再往下执行代码.作用二:如果用在返回值类型的方法上,如果方法返回类型为void,可以加可以不加,通常都不加,系统会默认给上. 核心作用:一般用于有返回值的方法上,用于返回跟方法返回类型的值.public static boolean isEquals(int a,int b) /isEquals 是否相等return a = b;例如这个方法: 方法返回值类型是布尔类型,我们return语句跟的就是布尔类型的结果.方法的形式参数是基本数据类型跟引用数据类型有何不同?/*基本数据类型的值传递,不改变原值,因为调用后就会弹栈,局部变量随之消失引用数据类型的值传递,改变原值,因为即使方法弹栈,但是堆内存数组对象还在,可以通过地址继续访问Java中到底是传值还是传址1,既是传值,也是传地址,基本数据类型传递的值,引用数据类型传递的地址2,java中只有传值,因为地址值也是值(出去面试都说这种,支持者是高司令(java之父)*/class Test3_Array public static void main(String args) /*int a = 10;int b = 20;System.out.println(a:+a+,b:+b);/a = 10,b = 20change(a,b);System.out.println(a:+a+,b:+b);/?*/int arr = 1,2,3,4,5;change(arr);System.out.println(arr1);public static void change(int a,int b) /a = 10, b= 20System.out.println(a:+a+,b:+b);/a = 10,b = 20a = b;/a = 20b = a + b;/b = 40System.out.println(a:+a+,b:+b);/a = 20, b = 40public static void change(int arr) /1,4,3,8,5for(int x=0; x 0 & a 0 & a 0 & age 200) this.age = age;/System.out.println(age);else System.out.println(请回火星吧,地球不适合你);public int getAge() /获取年龄return age;public void setName(String name) /设置姓名this.name = name;/System.out.println(name);public String getName() return name;Static关键字是什么?为什么要用static修饰成员变量?*A:案例演示*通过一个案例引入static关键字。*人类:Person。每个人都有国籍,中国。*B:画图演示*带有static的内存图class Demo1_Static public static void main(String args) /*Person p1 = new Person();/创建对象p1.name = 苍老师;/调用姓名属性并赋值p1.country = 日本;/调用国籍属性并赋值Person p2 = new Person();p2.name = 小泽老师;/调用姓名属性并赋值/p2.country = 日本;/调用国籍属性并赋值p1.speak();p2.speak();*/Person.country = 日本;/静态多了一种调用方式,可以通过类名.System.out.println(Person.country);class Person String name;/姓名static String country;/国籍public void speak() /说话的方法System.out.println(name + . + country);static关键字有什么用?*A:static关键字的特点(开发中一般常用于写工具类修饰静态方法)*a:随着类的加载而加载*b:优先于对象存在*c:被类的所有对象共享*举例:咱们班级的学生应该共用同一个班级编号。*其实这个特点也是在告诉我们什么时候使用静态?*如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的。*举例:*饮水机(用静态修饰)*水杯(不能用静态修饰)*共性用静态,特性用非静态*d:可以通过类名调用*其实它本身也可以通过对象名调用。*推荐使用类名调用。*静态修饰的内容一般我们称其为:与类相关的,类成员*B:案例演示*static关键字的特点* A:static的注意事项* a:在静态方法中是没有this关键字的* 如何理解呢?* 静态是随着类的加载而加载,this是随着对象的创建而存在。* 静态比对象先存在。* b:静态方法只能访问静态的成员变量和静态的成员方法* 静态方法:* 成员变量:只能访问静态变量* 成员方法:只能访问静态成员方法* 非静态方法:* 成员变量:可以是静态的,也可以是非静态的* 成员方法:可是是静态的成员方法,也可以是非静态的成员方法。* 简单记:* 静态只能访问静态。* B:案例演示* static的注意事项类的加载过程是怎样的?类加载过程:1、 在main方法中创建对象时,JVM会先去判断类(class)在方法区下是否已经存在,如果存在则直接使用已经存在的class。如果不存在,则把类所对应的.class文件加载到内存中的方法区2、 在把.class文件加载到方法区时,会分两部分加载:从.class文件头部依次加载内容,是静态的内容(静态变量、静态方法、静态代码块)就加载到方法区下的静态区域内; 是非静态的内容(成员变量、成员函数、构造函数、构造代码块)全部加载到方法区下的非静态区域内3、 在把.class中的所有静态内容全部加载完成之后,会对所有的静态成员变量进行默认初始化4、 在所有的静态成员变量默认初始化完成之后,在执行显式初始化5、 在对所有的静态成员变量显式初始化完成之后,就会把静态代码块加载到栈中执行(如果有多个静态代码块时,按照书写顺序依次加载到栈中执行)6、 所有的静态代码块全部执行完之后,整个类加载完成。对象的加载过程是怎样的?1、 当JVM执行new时,就会去堆中开辟一块空间2、 在空间开辟后,给空间分配地址3、 空间分配完后,就方法区下非静态区域中的类的成员加载到开辟的空间下4、 所有成员全部加载到开辟的空间后,对空间下所有的成员变量进行默认初始化5、 所有的成员变量默认初始化完成之后,调用相应的构造函数入栈执行6、 在执行构造函数时,分为两部分执行:6.1、 先执行构造函数中隐藏的三步代码(隐式三步): 1、执行super() (执行父类的构造函数也需要隐式三步) 2、对所开辟空间下的成员变量进行显式初始化 3、执行构造代码块6.2、 执行完隐式三步后,再执行构造函数中所书写的代码7、 在整个构造函数全部执行完成之后,表示对象创建完成。会把所开辟空间的地址赋给引用对象类里面可以写什么?class 类非静态成员变量静态成员变量非静态成员函数静态成员函数构造函数构造代码块静态代码块
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!