Java中数据类型
基本数据类型:byte、short、int、long、float、double、char、boolean
引用类型:类(class)、接口(interface)、数组(array)
形式参数类型分两种
基本类型:形式参数的改变不影响实际参数
引用类型:形式参数的改变直接影响实际参数
或者说:
基本数据类型作为参数传递:
传递的是实际的值(修改的其实不是同一个东西)
引用数据类型作为参数传递:
传递的是地址的值(修改的是同一个东西)
基本数据类型在方法调用之后,原本那个值是不会改变的
String是引用数据类型
在作为方法参数传递时,表现出来的是基本数据类型的效果
因为String的底层数据结构是char,char是基本数据类型。
代码1:
package com.jf.lxh.demo1.demo09_基本数据类型和引用数据类型;
public class Demo {
public static void main(String[] args) {
//基本数据类型形参改变不影响实际值。
int a = 10;//int是基本数据类型
// System.out.println("调用方法之前a的值:"+a);
changeA(a);//形参改变
// System.out.println("调用方法之后a的值:"+a);
//引用数据类型:数组
//引用数据类型形参改变会改变实参
int[] arr = new int[]{1,2,3};
// System.out.println("调用方法之前arr[0]的值"+arr[0]);
changeArr(arr);
// System.out.println("调用方法之后arr[0]的值"+arr[0]);
String s = "李四";
System.out.println("调用方法之前s的值:"+s);
changeString(s);
System.out.println("调用方法之后a的值:"+s);
}
public static void changeA(int a){
a = 20;
// System.out.println("a的值是:"+a);
}
public static void changeArr(int[] arr){
arr[0] = 100;
// System.out.println("修改后的值:"+arr[0]);
}
public static void changeString(String s){
s = "王五";
System.out.println("修改后的值:"+s);
}
}
代码2
package com.jf.lxh.demo1.demo09_基本数据类型和引用数据类型;
public class demo2 {
}
class Test{
public static void main(String[] args) {
int num = 10;
System.out.println(num);
Student s = new Student();
s.setAge(20);
System.out.println("调用方法之前"+s.getAge());
changeStu(s);
System.out.println("调用方法之后"+s.getAge());
}
public static void chengeNum(int num){
num = 20;
}
public static void changeStu(Student S){
S.age = 10;
}
}
class Student{
int age;
public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}
}