20171202:方法和数组的学习

本文探讨了Java中byte、int、short等基础类型在运算时的自动类型提升问题及解决方案,并通过实例展示了基本数据类型与引用数据类型在方法传递过程中的值拷贝与地址传递的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于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]的数据发生改变了!





由于博主能力暂时有限,不能对知识有一个自下而上的掌握与论述,有错误的地方希望凑巧看的人加以斧正!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值