1.方法的定义及调用
-
定义:可以完成特定功能的、相对独立的程序段
-
方法定义在类体中,位置随意,方法体中不能再定义方法
-
有返回值的话则至少有一个返回值
-
public class example3_1{//表示定义一个公开的类,名为MethodTest,因为是公开的类, static int square(int x)//[修饰符] 返回值类型 方法名 [(参数表)]{方法体;} { int s; s=x*x; return(s); } public static void main(String[] args) { int n=5;int result=square(n); System.out.println(result); } }
//有返回值的方法,其方法体至少有一条return语句
2.方法参数值传递
-
参数传递:完成实际参数与形式参数的结合,例如:
-
//单向传递,调用方法,交换变量的值
public class example3_2{ static void swap(int x,int y)//类似c语言,不过java不用声明 { int temp;//中间变量 System.out.println("Befor Swappig"); System.out.println("x="+x+" y="+y); temp=x;x=y;y=temp; System.out.println("After Swapping"); System.out.println("x="+x+" y="+y); } public static void main (String[] args){ int u=50,v=100; System.out.println("Before Calling"); System.out.println("u="+u+" v="+v); swap(u,v); System.out.print("After Calling\n");//c语言的/n在java也是换行 System.out.println("u="+u+" v="+v); } }
//与c语言调用函数类似
3.输入、输出基本类型数据
-
输入:Scanner是一个类,可以使用该类创建一个对象reader:Scanner reader=new Scanner(System.in),然后对象reader调用nextBoolean()、nextByte()、nextShort()、nextFloat()、nextInt()、nextLong()、nextDouble()
import java.util.Scanner; public class example3_3{ public static void main (String[] args){ System.out.println("请输入若干个数,每输入一个数回车确认"); System.out.println("最后输入数学0结束输入操作"); Scanner reader=new Scanner(System.in); double sum=0; int m=0; double x=reader.nextDouble(); while(x!=0) { m=m+1; sum=sum+x; x=reader.nextDouble(); } System.out.println(m+"个数的和为"+sum); System.out.println(m+"个数的平均值为"+sum/m); } }
-
-
输出:
-
System.out.println()换行,System.out.print()不换行
-
System.out.println("你好,"+ "很高兴认识你");
//可以将字符串分解成几部分,用并置符号“+”连接
-
System.out.printf("%4d,%4.3f",x,y);
//也可以像c语言一样,%f 输出浮点型数据,小数部分最多保留6位;%m.nf 输出浮点型数据占m列,小数点保留n位
4.方法签名与方法重载
-
方法签名:
-
定义:由方法名称和方法的形参列表共同组成,方法签名</u>不包括方法的返回值类型和访问修饰符</u>
-
-
方法重载:(overload)
-
定义:一个类中定义多个同名的方法,但要求每个方法具有不同的参数类型或参数个数
-
条件:方法名不同;参数个数不同或参数类型不同或参数顺序不同;同一作用域
-
例子
class example3_4{ void test() { System.out.println("No parameters"); } void test(int a) { System.out.println("a:"+a); } void test(int a,int b) { System.out.println("a:"+a+" b:"+b); } double test(double a) { System.out.println("double a:"+a); return a*a; } } class overload{ public static void main(String args[]){ example3_4 ob=new example3_4(); double result; //参数类型不同,对应调用方法不同;此时区分方法靠的是参数的数据类型 ob.test(); ob.test(10); ob.test(10,20); result=ob.test(123.22); System.out.println("result of ob.test(123.22):"+result); } }
??
-
5.变量作用域
-
四个级别:
-
类级:(全局级变量或静态变量)需要使用static关键字修饰;
-
对象实例级:成员变量,实例化后分配内存空间,才能被访问;
-
方法级:方法内部变量,即局部变量:
-
块级:定义在一个内部的变量它的作用域只限于块内;
public class example3_5{ public static String name="微学院"; public int i; public void test1() { //int j;//在方法中或者块中则不能这样初始化,不然会报错 int j=3; if(j==3) {//块可以访问方法级别的变量,j作为test1方法中的变量 int k=5; System.out.println("k="+k); } //System.out.println("k="+k);块中变量不能被外部调用 System.out.println("name="+name+",i="+i+",j="+j); } public static void main(String[] args){ System.out.println(Demo.name);//? Demo t=new Demo();//? t.test1(); } }
??
-
-