Java語法允許變量和類型重名,這是因為Java采用了作用域規則的方式來解析變量和類型名之間的沖突。在Java中,變量和類型名的作用域是不同的,可以分別存在于不同的命名空間中。
public class Test { public static void main(String[] args) { String str = "Hello World!"; // 定義變量str System.out.println(str); Test str = new Test(); // 定義同名類型 str.print(); // 調用同名類型的方法 } public void print() { System.out.println("This is Test class"); } }
在上面的代碼中,首先定義了一個字符串變量str,并且使用System.out.println()方法輸出了變量的值。接著,在同一個作用域內定義了一個同名類型Test,并且使用new關鍵字創建了同名類的實例,然后調用了同名類中的方法print()。
如果變量和類型名重名,那么會優先使用變量名,因為變量的作用域比類型的作用域更小。如果要使用同名類型,需要使用完整的類型名或者在同名類型前添加包名。
需要注意的是,在代碼中重復定義同名變量和類型是一種不良的編程習慣,容易引起混淆,因此應該避免使用重復的變量和類型名。