1.类的无参方法
语法格式:
public 返回值类型 方法名() {
//方法的主体
}
返回值的两种情况:
第一种情况:如果方法没有返回值,返回值类型为void
第二种情况:如果方法具有返回值,方法中必须使用关键字return返回该值,返回值类型为该返回值的类型。
return的作用:跳出方法,返回结果
在方法调用中需注意:
方法的返回值类型为void,方法中不能有return 返回值!
方法不能返回多个值!
多个方法不能相互嵌套定义!
不能在方法外部直接写程序逻辑代码!
调用一个无返回值类型的方法,不能使用任何变量或对象来接收。例子:
方法:
public void get (){
使用:
对象.get ();
练习(1)
实现输入用户名和密码,符合条件(假设用户名为JadeBird ,密码为0000)的进入系统 。
管理员类:
package com.bdqn.day01;
/**
* @authorDesc 诸神在上,佑我程序,玄功护体,BUG皆去!
* @author Xunan
* @date 2022-07-20 16:33:06
* @version 1.0.0
* @description 管理员类
*/
public class Administrator {
/**
管理员姓名
*/
String admin;
/**
密码
*/
int password;
/**
* 新密码
*/
int newPassword;
/**
* @description 修改方法
* @author Xunan
* @date 2022-07-20 16:40:38
* @param
* @return
*/
public void amend(){
if ("admin".equals(admin) && "123456".equals(password)){
System.out.println("");
}else {
System.out.println();
}
}
}
测试类:
package com.bdqn.day01;
import java.util.Scanner;
/**
* @authorDesc 诸神在上,佑我程序,玄功护体,BUG皆去!
* @author Xunan
* @date 2022-07-20 16:42:39
* @version 1.0.0
* @description 测试类
*/
public class AdministratorTest {
/**
* @description
* @author Xunan
* @date 2022-07-20 17:21:55
* @param args
* @return
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int newPassword = 0;
do {
Administrator center = new Administrator();
System.out.println("请输入用户名:");
String admin = sc.next();
System.out.println("请输入密码:");
int password = sc.nextInt();
if ("admin".equals(admin) && 123456 == password){
System.out.println("请输入新密码:");
newPassword = sc.nextInt();
System.out.println("修改成功");
}else {
System.out.println("不匹配,您没有权限");
break;
}
center.admin = admin;
center.password = password;
center.newPassword = newPassword;
center.amend();
}while (false);
}
}
运行截图:
2.成员变量和局部变量、
定义:在类中定义的变量为类的成员变量,在方法中定义的变量称为局部变量。
例如:
public class AutoLion{
变量1类型 变量1;
变量2类型 变量2;
变量3类型 变量3;
public 返回类型 方法1(){
变量4类型 变量4;
}
public 返回类型 方法2(){
变量5类型 变量5;
}
以上变量1,2,3位成员变量;变量4,5为局部变量。
注:成员变量和局部变量的区别
1.作用域不同
局部变量的作用域仅限于定义它的方法
成员变量的作用域在整个类内部都是可见的
2.初始值不同
Java 会给成员变量一个初始值
Java 不会给局部变量赋予初始值
注意:在同一个方法中,不允许有同名局部变量,在不同的方法中,可以有同名局部变量。
在同一个类中,成员变量和局部变量同名时,局部变量具有更高的优先级。
1.类的带参方法
语法格式:
<访问修饰符> 返回类型 <方法名>(<形式参数列表>) {
//方法的主体
}
1.<访问修饰符>指的是该方法允许被访问的权限范围,只能是public、protected或private。其中public表示该方法可以被任何其他代码调用。
2.<形式参数列表>是传递给方法的参数列表,列表中各参数间以逗号分隔,格式:数据类型 参数1, 数据类型 参数2, … , 数据类型 参数n。如果n=0,则代表没有参数,这时的方法就是前面学习过的无参方法
调用一个有返回值类型的方法,必须使用该返回值类型的变量或对象来接收。例子:
方法:
public String get (){
return "";
使用:
String 变量名=对象.get ();
形参和实参:形式参数和实际参数。
在定义方法和调用方法时,把参数分别称为形式参数和实际参数,简称形参和实参,形参是在定义方式时对参数的称呼,目的是定义方法需要传入的参数个数和类型,实参是在调用方式时传递给方法处理的实际的值。
调用方法时,需注意两点:
1:先实例化对象,在调用方法
2:实参的类型、数量、顺序都要与形参一 一对应(必须一一对应)
练习(2)
修改客户姓名,输入新、旧姓名,修改并显示是否修改成功。
修改客户类:
package com.bdqn.day03;
import java.util.Scanner;
/**
* @authorDesc 诸神在上,佑我程序,玄功护体,BUG皆去!
* @author Xunan
* @date 2022-07-23 12:57:25
* @version 1.0.0
* @description 修改客户类
*/
public class Amend {
Scanner sc = new Scanner(System.in);
int i;
/**
* 客户姓名
*/
String[] names = new String[5];
/**
* @description 输入客户信息
* @author Xunan
* @date 2022-07-23 13:21:06
* @param name
* @return
*/
public void addname(String name){
for (i = 0;i < names.length;i ++){
if (names[i] == null){
names[i] = name;
break;
}
}
}
/**
* @description 显示客户信息
* @author Xunan
* @date 2022-07-23 13:21:44
* @param
* @return
*/
public void showname() {
System.out.println("***********************************");
for (String name : names) {
if (name != null) {
System.out.println(name + "\t");
}
}
}
/**
* @description 修改客户信息
* @author Xunan
* @date 2022-07-23 13:22:00
* @param name
* @return
*/
public void amendname(String name){
String newname;
for (i = 0;i < names.length;i ++){
if (name.equals(names[i])){
System.out.println("请输入新的名字:");
System.out.println("*********************************");
newname = sc.next();
names[i] = newname;
}
}
showname();
}
}
测试类:
package com.bdqn.day03;
import java.util.Scanner;
/**
* @authorDesc 诸神在上,佑我程序,玄功护体,BUG皆去!
* @author Xunan
* @date 2022-07-23 13:13:04
* @version 1.0.0
* @description 测试类
*/
public class AmendTest {
public static void main(String[] args) {
String name;
Scanner sc = new Scanner(System.in);
Amend amend =new Amend();
for (int i = 0;i < 5;i ++){
System.out.println("请输入客户姓名:");
name = sc.next();
amend.addname(name);
}
amend.showname();
System.out.println("请输入需要修改的名字");
name = sc.next();
amend.amendname(name);
}
}
运行结果截图:
基本类型和引用类型传参的区别
1.如果方法传递的参数为基本数据类型时,操作传递的是变量的值,改变形式参数
的值不会影响实际参数的值。
2.如果方法传递的参数为引用数据类型时,传递参数的过程是把原对象的引用(可理解为内存地址)传递给另一个引用。
练习(3)[数组作为参数的方法]
编写带参方法,实现对客户姓名的排序。
客户姓名类:
package com.bdqn.day03;
import java.util.Arrays;
/**
* @authorDesc 诸神在上,佑我程序,玄功护体,BUG皆去!
* @author Xunan
* @date 2022-07-23 13:49:17
* @version 1.0.0
* @description 客户姓名排序类
*/
public class Sort {
public void rank (String[] names){
Arrays.sort(names);
for (String name : names) {
System.out.println(name);
}
}
public void show (String[] names){
for (String name : names) {
System.out.println(name);
}
}
}
测试类:
package com.bdqn.day03;
/**
* @authorDesc 诸神在上,佑我程序,玄功护体,BUG皆去!
* @author Xunan
* @date 2022-07-23 13:48:09
* @version 1.0.0
* @description
*/
public class SortTest {
public static void main(String[] args) {
String[] names = {"tom","jack","merry","smith","sunny"};
Sort sort = new Sort();
System.out.println("**********************");
sort.show(names);
System.out.println("**********************");
sort.rank(names);
}
}
运行结果截图:
练习(4)[对象作为参数的方法]
客户信息的添加和显示,客户信息包括:姓名、年龄、是否有会员卡
客户属性类:
package com.bdqn.day03;
/**
* @authorDesc 诸神在上,佑我程序,玄功护体,BUG皆去!
* @author Xunan
* @date 2022-07-23 14:25:41
* @version 1.0.0
* @description 客户属性类
*/
public class Customer {
String name;
int age;
boolean vip;
}
测试类:
package com.bdqn.day03;
/**
* @authorDesc 诸神在上,佑我程序,玄功护体,BUG皆去!
* @author Xunan
* @date 2022-07-23 14:29:39
* @version 1.0.0
* @description 测试类
*/
public class CustomerTest {
public static void main(String[] args) {
ShowInfor showInfor = new ShowInfor();
Customer customer1 = new Customer();
customer1.name = "王一";
customer1.age = 30;
customer1.vip = false;
showInfor.addcustomer(customer1);
Customer customer2 = new Customer();
customer2.name = "郝强";
customer2.age = 19;
customer2.vip = true;
showInfor.addcustomer(customer2);
showInfor.show();
}
}
运行结果截图: