方法及面向对象
一、参数和返回值使用的时机
- 参数:当想将一个方法中的数据传递到另外一个方法中,那么被调用方法需要定义参数,调用时传递想要传递过去的数据
- 返回值:调用方法时,想要此方法的结果,去参与其他操作,那么被调用的方法需要将自己的结果返回
二、方法的注意事项
1.方法不调用不执行,main方法是jvm调用的
2.方法之间是平级关系,不能互相嵌套
3.方法的执行顺序只和调用顺序有关
4.[void]不能和[return 结果]共存,但是[void]能和[return]共存
(1)void:代表方法无返回值
(2)return 结果:代表有返回值 -> 先将结果返回,然后结束方法
(3)return:仅仅代表结束方法
5.一个方法中只能有一个返回值,不能连续写多个return
6.调用方法的时候,如果没有此方法会报错
特殊情况
public static String getMath(int n){
if (n==1){
return “n的值为1”;
}else if (n>1) {
return “n的数值大于1”;
}else {
return “n的数值小于1”;
}
}
使用else if的情况必须要有else 否则虚拟机会认为else if和if两个条件判断都不同过 导致报错提示没有返回值
三、方法调用练习
需求:
键盘录入一个整数,将整数传递到另外一个方法中,在此方法中判断这个整数的奇偶性
如果是偶数,方法返回"偶数" 否则返回"奇数"
方法名:要 参数:要 返回值:要
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
int n = scanner.nextInt();
String math = getMath(n);
System.out.println(math);
}
public static String getMath(int n)
{
if(n%2==0)
{
return "偶数";
}
else
{
return "奇数";
}
}
需求 : 求出1-100的和,并将结果返回
方法名:要 参数:不要 返回值:要
public static int getSum(){
int sum = 0;
for(int i = 0 ;i<=100;i++){
sum += i;
}
return sum;
}
需求:
定义一个方法,给这个方法传几,就让这个方法循环打印几次"我是一个有经验的JAVA开发工程师"
方法名:要 参数:要 返回值:不要
public static void print(int n){
for(int i = 0;i<n;i++){
System.out.println("我是一个有经验的JAVA开发工程师");
}
}
需求:
在main方法中定义一个数组,将数组传递到方法中,在此方法中遍历数组
public static void printArray(int[] arr){
for(int i = 0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
四、方法的重载
1、方法概述
1.概述:
方法名相同,参数列表不同的方法,叫做重载方法
2.什么叫做参数列表不同:
(1)参数个数不同
(2)参数类型不同
(3)参数类型的顺序不同
3.和什么无关:
(1)和返回值无关
(2)和参数名无关
2、代码示例
public class Day06OverLoad {
public static void main(String[] args) {
sum(10, 20);
sum(10, 20, 30);
sum(10, 20, 30, 40);
}
public static void sum(int a, int b) {
int sum = a + b;
System.out.println("sum = " + sum);
}
public static void sum(int a, int b, int c) {
int sum = a + b + c;
System.out.println("sum = " + sum);
}
public static void sum(int a, int b, int c, int d) {
int sum = a + b + c + d;
System.out.println("sum = " + sum);
}
}
什么时候定义重载方法:功能一样,但是实现细节不一样
五、面向对象
1、面向对象介绍
1.面向对象是什么:是Java语言的核心编程思想 自己的事情别人(对象)做
2.使用面向对象思想编程:为了让事情变的简单(为了少写代码)
3.什么时候用面向对象思想编程:
在一个类中想使用别的类中实现好的功能时,就需要使用面向对象思想编程
4.怎么使用面向对象思想编程:
(1)new对象,点方法
(2)类名直接点方法名
2、实体类和对象
(1)类的概念
1.java中的类:
a.实体类:描述的万物的分类,比如:人类,动物类,手机类
b.测试类:测试代码是否能跑通的类,就是带main方法的类
2.实体类:一类事物的抽象表示形式
3.实体类中的成员:
属性:这个分类都有啥 即成员变量
(1)定义位置:类中方法外
(2)定义格式:数据类型 变量名
(3)成员变量有默认值:
整数:0
小数:0.0
字符:‘\u0000’
布尔:false
引用:null
(4)作用范围:整个类
行为:这个分类的作用
4.代码示例
public class Day06Class {
String name;
String age;
public void eat(){
System.out.println("吃饭");
}
public void sleep(){
System.out.println("睡觉");
}
public void work(){
System.out.println("工作");
}
}
(2)对象
1.对象:一类事物的具体体现
2.使用:
(1)导包: import 包名.类名
如果两个类在同一个包下,想要使用对方的成员无需导包
如果两个类不在同一个包下,想要使用对方的成员需要导包
(2)创建对象:想要使用哪个类中的成员,就new哪个类的对象
类名 对象名 = new 类名()
(3)调用成员(成员变量,成员方法):想要使用哪个类的成员,就用哪个类的对象去点哪个成员
对象名.成员变量名 = 值
对象名.方法名()
3.代码示例:
public class Day06Class_Train {
public static void main(String[] args) {
Day06Class day06Class = new Day06Class();
day06Class.name = "张三";
day06Class.age = "18";
day06Class.eat();
day06Class.sleep();
day06Class.work();
}
}
(3)匿名对象的使用
1.匿名对象:new对象的时候没有等号左半边部分,只有new的部分
2.使用:
new 类名().成员
3.注意:
如果涉及到为属性赋值,千万不要用匿名对象(匿名对象属于一次性使用的对象)
4.代码示例:
new Day06Class().eat();
六、成员变量和局部变量的区别
1.定义位置不同(掌握)
(1)成员变量:类中方法外
(2)局部变量:方法内部以及参数位置
2.作用范围不同:(掌握)
(1)成员变量:作用于整个类
(2)局部变量:只作用于自己方法内部
3.初始化值不同:(掌握)
(1)成员变量:是有默认值的
(2)局部变量:没有默认值,必须初始化之后才能使用
4.内存位置不同:(了解)
(1)成员变量:在堆中
(2)局部变量:在栈中
5.生命周期不同:(了解)
(1)成员变量:随着对象的创建而创建,随着对象的消失而消失
(2)局部变量:随着方法的调用而创建,随着方法调用完毕而消失
6.代码示例:
public class Person {
//成员变量
String name;
public void eat(){
int i = 10;//局部变量
System.out.println(name);
System.out.println(i);
}
public void drink(){
System.out.println(name);
//System.out.println(i);
}
}
七、
1.定义一个类MyData,代表生日,类中定义三个属性,分别为 year month day,并为三个属性赋值
``W`
public class MyData {
String year;
String month;
String day;
public static void main(String[] args) {
MyData myData = new MyData();
myData.year = "2020";
myData.month = "01";
myData.day = "01";
System.out.println(myData.year + "-" + myData.month + "-" + myData.day);
}
}
2.定义一个公民类Citizen,类中定义三个属性,分别为cardId(String),name(String),MyData(MyData),并为三个属性赋值
注意:如果属性为自定义的类型,赋值是需要new对象赋值,不然直接调用时会出现空指针异常
public class Citizen {
String cardId;
String name;
MyData myData;
public static void main(String[] args)
{
Citizen citizen = new Citizen();
citizen.cardId = "110101199001011234";
citizen.name = "张三";
citizen.myData = new MyData();
citizen.myData.year = "1990";
citizen.myData.month = "01";
citizen.myData.day = "01";
System.out.println(citizen.cardId);
System.out.println(citizen.name);
System.out.println(citizen.myData.year + "-" + citizen.myData.month + "-" + citizen.myData);
}
}