Java学习小记(一) ——数据类型与数组

基本数据类型的转换

自动类型转换规则

  • 精度小–>精度大

​ char–>int–>long–>float–>double

​ byte–>short–>int–>long–>float–>double

​ 比如: int a=‘c’//正确

  • byte,short和char不能自动转换,但是三者可以相互运算,先换为Int类型

    比如:

    1
    2
    3
    4
    5
    
    byte a=126;
    byte b=1;
    short c=1;
    int d=a+c;//正确
    byte e=a+b;//错误,只能是int
    

强制类型转换规则

  • 使用时加上强制类型转换符()
  • 细节image-20240923195423880

基本数据类型和String类型的转换

  • 基本->String:

    加上"“即可,如:

    1
    2
    3
    4
    5
    6
    7
    
    int a=100;
    float b=10.1f;
    boolean c=true;
    String s1=a+"";
    String s2=b+"";
    String s3=c+"";
    System.out.println(s1+""+s2+""+s3+"");//10010.1true
    

    需要注意的是,基本数据类型不一定在String中能找到对应,如hello就不能转换为int类型

  • String->基本

    调用parse xx方法即可

    1
    2
    3
    
    String s="1234";
    int convert_s=Integer.parseInt(s);//1234
    //double,float,long,byte,boolean,short等同理
    

    怎样取出字符串的首字符?

    char s_first=s.charAt(0);

JAVA中的数组

使用细节

  • 数组是多个相同数据类型的组合。
  • 数组中可以放基本类型/引用类型,但是不能混用。
  • 数组本身属于引用类型,数组型的数据本质上是对象。

赋值机制

  1. 值传递:对于基本数据类型(如int, float, char等),Java使用值传递。也就是说,当你将一个基本类型的变量作为参数传递给方法时,传递的是该变量的一个副本,方法内部对该副本的修改不会影响原变量。

  2. 引用传递:对于引用类型(包括数组,对象等),Java使用引用传递。传递的是对象的引用(即对象在内存中的地址),而不是对象本身。这意味着在方法内部对对象的修改会影响到原对象。

  3. 两者区别:image-20240924105752902

  4. 引用重新赋值:虽然传递的是对象的引用,但如果在方法内部将这个引用重新指向另一个对象,那么这种更改不会影响原始引用

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    public class Test {
        public static void main(String[] args) {
            int[] array = {1, 2, 3};
            modifyArray(array);
            change(array);
            for (int i : array) {
                System.out.print(i + " "); // 输出:10 2 3
            }
        }
    
        public static void modifyArray(int[] arr) {
            arr[0] = 10; // 修改数组的第一个元素
        }
    
        public static void change(int[] arr){
        	arr = new int []{4,3,2,1};
        }
    }
    //结果中数组array的第一个元素被改变。
    //但是后面没变,因为change方法中new int 的数组只在其作用域内赋值,不会改变main方法的元素
    

​ 数组在默认情况下是引用传递,赋的值是地址。

​ 如:

1
2
3
4
int [] arr1 ={1,2,3};
int [] arr2 =arr1;
arr2[0] = 10;
//arr1的值因arr2的改变而改变
Licensed under CC BY-NC-SA 4.0