JAVA的方法
1.JAVA中的包
1.什么是包:给项目创建文件夹
2.包有什么优点:有效管理文件,预防在同一个项目里面的类名冲突
3如何创建包?
package 包名;
package cn.znsd.test;
注意事项:
1.层次比较多则使用点.符号
2.package必须放在类的有效代码的第一句
3.包名统一小写字母
4.使用包里面的类
导入包:
import 包名;
import cn.znsd.test.*;
或者在使用时直接通过 包.类
2.什么是方法?
描述对象的行为(动作)。
例如:学生的学习,狗狗的叫,汽车的运行
3.无参数无返回的方法的语法:
创建方法的语法:
//方法的通用语法
public static 返回类型 方法名(参数列表){
}
//无参数无返回的方法的语法
public static void 方法名(){
//方法执行的代码块
}
调用方法:
通过方法名直接调用
案例:
static int[] studentNoS=new int[3];//保存学号
static int count=0;//计数器
public static void main(String[] args){
startMenu();
}
/**
*开始菜单
*/
public static void startMenu(){
Scanner input = new Scanner(System.in);//创建扫描仪对象
System.out.println("1. 新增学号,2. 删除学号,3. 查询学号,4. 修改学号,5. 退出系统 请选择:");
int choose=input.nexInt();
if(choose==1){
addStudent();
}else if(choose==2){
delStudent();
}
}
/**
*添加学员信息
*/
public static void addStudent(){
System.out.println("新增学员信息。。。。");
System.out.println("省略100行代码。。。。");
count++;
}
/**
*删除学员信息
*/
public static void delStudent(){
System.out.println("删除学员信息。。。");
System.out.println("省略100代码。。。。");
}
4.带一个引用类型参数的方法
创建带引用类型参数方法的语法:
public static void 方法名(引用类型 参数名){
方法体;
}
调用方法:
方法名(实参);
注意事项:
1.创建方法时指定的参数称为:形参,必须指定类型
2.调用方法时使用参数称为:实参,实参必须在调用前声明且赋值,调用时不能指定类型
3.调用方法时的参数类型必须和创建时的类型一致。
static int count=0;//计数器
static Scanner input=new Scanner(System.in);
public static void main(String[] args){
System.out.println("------启动程序------");
String[] studentNos=new String[3];//学生数组
addStudentNo(studentNos);//实参
searchStudentNo(studentNos);
}
/**
*实现添加学号操作
*(String[] studentNos)称为参数:形参
*/
public static void addStudentNo(String[] studentNos){
System.out.println("实现添加学号操作:");
System.out.println("请输入学号:");
String studentNo=input.next();
studentNos[count]=studentNo;
count++;
System.out.println("添加成功!");
searchStudentNo(studentNos);
}
/**
*实现查询学号操作
*/
public static void searchStudentNo(String[] nos){
System.out.println("实现查询学号操作:");
for(int i=0;i<count;i++){
System.out.println(nos[i]);
}
}
5.参数为值传递和引用传递的区别?
1.值传递传递的是值的副本,在方法里面修改副本对原来的变量无影响。
2.引用类型传递的是引用地址的副本,在方法里面修改则会影响原来的变量。
public static void main(String[] args){
int num=10;
System.out.println("调用方法之前的值:"+num);//10
testNum(num);
System.out.println("调用方法之后的值:"+num);//10
int[] nums={10};
System.out.println("调用方法之前的值:"+nums[0]);//10
testNums(nums);
System.out.println("调用方法之后的值:"+nums[0]);//100
}
//方法的值传递
public static void testNum(int num){
System.out.println("使用的是值传递、、、、");
num=100;
}
//方法的引用传递
public static void testNums(int[] nums){
System.out.println("使用的是引用传递");
nums[10]=100;
}
6.带返回类型的方法
语法:
public static 返回类型 方法名(参数类型 参数名1,参数类型 参数2.....){
return 返回类型;
}
调用:
数据类型 变量名=方法名(参数1,参数2....);
public static void main(String[] args){
int money=buy(100,"红牛",8);//调用buy的方法
System.out.println("还剩下:"+money);
}
//创建buy的方法
public static int buy(int money,String name,int buyMoney){
int newMoney=money-buyMoney;
System.out.println("正在购买:"+name);
return newMoney;
}
public static void test(){
//return "";//错误
return;
}
注意事项:
1.创建方法时如果定义了返回类型,必须用return进行返回,且返回的类型和创建时的返回类型要一致。
2.创建方法时如果定义的是void (无返回值)的类型,可以用return,也可以不用(通常不用),如果使用了return则不能给值。
3.调用方法时参数必须和创建方法的参数类型,个数,顺序一致。
4.如果创建的方法有返回类型,调用时接受的类型必须和返回类型的一致(在类型兼容的情况下也可以)。
5.在方法里面,如果遇到return关键字,则方法直接结束。如果写在return后面的代码会出现错误。
比如:
public static int test(int num){
System.out.println("hello....test....");
if(num>100){
retrun num;
//System.out.println("hello....");//此代码出现错误,因为return后方法结束,此代码永远不会执行
}
return 10;
}
7.成员变量和局部变量
成员变量:
定义 在类里面的变量称为成员变量。
局部变量:
定义在方法里面的变量称为局部变量。
成员变量和局部变量对比:
1.作用域:在什么范围可以使用。
成员变量:在类里面可以使用,如果是static修饰称为静态的成员变量,此成员变量是属于类的,可以直接使用。非static修饰则先创建对象(属于对象),再通过对象使用。
static原因:在第一次使用类时,则内存开好空间保存静态变量。等类销毁 时,静态成员变量则通过GC(jvm回收机制)回收(耗内存)
非static原因:在对象被创建时,则在内存里面开好空间保存非静态变量的值。等对象销毁时,GC自动回收。
局部变量:在方法里可以使用,一定先声明变量后面才可以使用。
2.默认值:
成员变量:系统会给变量赋一个初始值(默认值),不用赋值都可以使用。
整型:0
浮点型:0.0
布尔型:false;
字符型:一个空格
引用类型:null
局部变量:无初始值,则先赋值才能使用。
public class Demo5{
//全局变量
static int[] studentNos;
static int count;//有默认值
public static void main(String[] args){
int num;//局部变量,未赋值则报错
//num=10;
System.out.println("count--->"+count+",num--->"+num);
}
}
3.当在方法里面出现了局部变量和全局变量同名的情况,优先局部变量。就近原则。