关于byte、int、short的一些问题
今天在了解一些基础时,对于基本类型的某些方面我还是有些缺漏,在byte、int、short类型的变量参与运算时会出现一些转型上的问题。如下程序:
这三种类型的变量在参与算术运算时编译器会自动将这些变量提升为int类型的数据,结果也为int类型的数据,因此会出现错误,解决方法就是将他们的结果进行强制转型。
注:若是byte/int/short类型的常量进行运算时,只要运算出来的结果不超过运算结果的类型时,也可进行赋值
二、Java的方法值传递的问题
在调用方法时,对方法传递的参数有些地方需要注意:
1.若传递的参数为基本数据类型,则传递的是参数的值的拷贝,如下
package 方法的学习;
/*
* 若方法传递的参数为基本数据类型,那么方法传递的是变量值的拷贝
*/
public class MethodDemo3 {
public static void test(int a){
a+=100;
System.out.println("进入方法之后a="+a);
}
public static void main(String[] args) {
int a=0;
System.out.println("进入方法之前a="+a);
test(0);
System.out.println("然而a的值为:"+a);
}
}
结果为:
2.若方法传递的参数为引用数据类型,则传递的参数为引用参数的副本,副本存放了原参数的地址
(用数组作为例子)
package 方法的学习;
/*
* 若方法传递的参数为引用数据类型,那么传过来的参数是为引用参数
* 的副本,副本存放的是参数的地址
*/
public class MethodDemo4 {
public static void arrDemo(int[] a){
a[2] = 666;
}
public static void main(String[] args) {
int[] a = {23,23,999,89,25,28,32};
arrDemo(a);
//来一个foreach循环
for(int x : a){
System.out.print(x+" ");
}
}
}
结果数组a[2]的数据发生改变了!
由于博主能力暂时有限,不能对知识有一个自下而上的掌握与论述,有错误的地方希望凑巧看的人加以斧正!