美文网首页
JavaSE之方法

JavaSE之方法

作者: 金石_832e | 来源:发表于2019-03-05 19:05 被阅读0次

方法

方法 :就是一套功能,类似学过的函数(方法不能嵌套,定义在类块当中)
* 1.访问控制符 public(后期修改,小白先写这个)
* 2.修饰符static:静态,静态方法可以被另一个静态方法直接调用(后期修改,小白先写这个)
* 3.方法的返回值(void:无返回值,任意的数据类型;利用return返回对应类型的数据)
* 4.方法的形参
* 5.方法体
注意:
* 方法如果想要被执行,需要被调用
* 不要把打印的数据当做返回值
* return两个作用:返回数据,终止方法。
* 基本数据类型传递的是数值,二引用数据类型传递的是引用。
如果方法有返回值,若出现if(){return};return x;如果条件成立,则第二个return不生效。(跳出方法了)

package com.zpwd.chapter5_0305;

public class Demo1 {
public static void getSum() {    // 无参,无返回值
    int num1 = 10;
    int num2 = 20;
    System.out.println(num1 + num2);
    return;                          
    // 没有返回值的方法是可以有return的,作用:跳出该方法
}

public static int getSum1() {   // 无参,有返回值
    int num1 = 10;
    int num2 = 20;
    return  num1 + num2;
}

public static int sum(int num1, int num2) {// 形参 // 有参,有返回值
    int sum1 = num1 + num2;

    return sum1;
}

public static void main(String[] args) {
    getSum();
    
    System.out.println(getSum1());
    
    int a = sum(1, 2);//实参
    System.out.println(a);
}

}

面试题

1.给出结果

package com.zpwd.chapter5_0305;

public class Test1 {
// 面试题1:给出结果
public static void main(String[] args) {
    int x = 10;
    System.out.println(x);   //  该x输出的是main栈针下的x
    getNum(x);              // 该x传入main栈针下的x,但改变的是getNum栈针下的x
    System.out.println(x);   //  该x输出的是main栈针下的x
    
}

private static int getNum(int x) {
    x = 3 * x;
    return x;
    // TODO Auto-generated method stub

}

}

注意该题,变量x分别在两个方法中声明变量是存放在栈内存中的,执行一个方法时会压入该方法的栈针。两个变量x分别存放在不同的栈针内,说明两个x不是同一个变量,因为作用域不同。两个System.out.println(x);都输出的是main栈针下的变量,所以结果为10 和 10。


2.给出结果

package com.zpwd.chapter5_0305;

public class Test2 {
// 面试题2:给出结果
public static void main(String[] args) {
    // 堆中存放的是数组
    int x[] = { 10 };// 压入main栈针,声明数组变量(存放的是地址,指向堆中对应的地址,数组第一个元素值为10)
    System.out.println(x[0]); // 该x输出的是堆中x数组的第一个元素
    getNum(x); // 改变对中的x数组第一个元素的值
    System.out.println(x[0]); // 该x输出的是堆中的改变后的x数组的第一个元素

}

private static void getNum(int x[]) {
    // TODO Auto-generated method stub
    x[0] = x[0] * 3;
}

}
注意该题,数组x分别在两个方法中声明,但是数组存放在堆内存中的,这个数组在这个堆中只有一个,所以一个方法改变了该数组,会影响另一个方法对该数组的输出。(数组中的值改变了),所以结果为10 和 30。


方法的重载

重载:在一个类中,不允许声明同名且同参的方法。(重载也叫:静态多态,编译时多态,overload)

public class MethodDemo6 {
// 前提:在一个class中,不允许声明同名且同参的方法
public static int test1(double a,int i) {
    return 1;
}
public static double test1(int i,double a) {
    return 1.1;
}
public static void main(String[] args) {
    // 重载(静态多态,编译时多态,overload):在一个类中,同名不同参的方法
    test1(1.0,1);
}
}

构造方法的重载

public class Demo3 {

public Demo3() {

}

public Demo3(int num) { // 构造方法的重载

}
}

特殊的方法:构造器(构造方法)

  • 1.构造方法的名称必须与类名称一致
  • 2.没有返回值,没有void
  • 3.不能用static修饰
  • 4.作用:实例化对象,为对象属性赋值。
  • 5.当一个类没有写构造方法时,JVM会给这个类提供一个空的,无参的构造方法。
  • 一旦存在有参的构造方法,JVM不再提供无参的构造方法。

面试题

package com.zpwd.chapter6_0306;

class Test {
String name; // 默认值为NULL
int age; // 默认值为0

public void show() {
    System.out.println(name);
}
}

public class Demo2 {
public static void main(String[] args) {
    Test t = new Test();

    t.show();
    System.out.println(t.age);

}
}
  • 全局变量是有默认值的。
  • 全局变量类型与默认值:整型,0;浮点型,0.0;布尔型,false;字符型,\u0000;引用数据类型:null

输出结果为:null和0


package com.zpwd.chapter6_0306;

class Test3 {
String name;

public void show(String name) { // 全局变量name和形参name同时存在时
    System.out.println(name);// 该name指向最近的一个name.

    // 要是想输出全局变量name,则System.out.println(this.name);
}
}

public class Demo3 {
public static void main(String[] args) {
    Test3 t = new Test3();
    t.name = "张三";
    t.show("李四");
}
}

输出结果为:李四

  • 全局变量name和形参name同时存在时,show()方法中的name因就近原则,取离他最近的name。形参的name近
  • 如果想用全局变量的name,用this关键字。

谈谈垃圾自动回收(gc):JVM会把那些堆内存中没有引用的对象视为垃圾对象,这些对象在执行完指定工作后,JVM会自动找到这些垃圾对象,调用其finalize()方法回收其内存。

产生没有引用的对象:

  • Demo d=null;

  • new Demo1().test2();

相关文章

  • JavaSE之方法

    五、方法 目录:何谓方法、方法的定义及调用、方法重载、命令行传参、可变参数、递归 1.什么是方法? Java方法是...

  • JavaSE之方法

    方法 方法 :就是一套功能,类似学过的函数(方法不能嵌套,定义在类块当中)* 1.访问控制符 publi...

  • JavaSE之方法

    有参方法 注意问题 重载 构造器 创建对象 全局变量存在默认值 就近原则 对象类型数组

  • JavaSE 基础学习之五 —— IO 操作 (java. io

    接上篇《JavaSE 基础学习之四 —— 异常的处理》 五. JavaSE 基础学习 —— IO 操作 (java...

  • Linux Jdk 下载及安装

    方法一: 官网:https://www.oracle.com/technetwork/java/javase/do...

  • JavaSE之异常

    异常:运行期出现的错误。 1.Java异常是Java提供的用于处理程序中错误的一种机制,所谓错误是指在程序运行的过...

  • javaSE之枚举

    枚举:其实就是一种特殊的类,一般用于表示多种固定的状态.格式: 枚举类特点:1.枚举类很安全,不能被实例化对象,甚...

  • JavaSE之数组

    一维数组:一条线 二维数组:一个面 三维数组:一个立方体,三维数组使用较少,这里不提及。 一维数组 数组的创建 声...

  • JavaSE之容器

    Collection接口,位于Java.util包中 接口set Api中的解释是:一个不包含重复元素的 coll...

  • JavaSE之数组

    六、数组 目录:数组概述、数组声明创建、数组使用、多维数组、Array类、稀疏数组 1.什么是数组 数组的定义:数...

网友评论

      本文标题:JavaSE之方法

      本文链接:https://www.haomeiwen.com/subject/uanouqtx.html