首页
学习
活动
专区
圈层
工具
发布

java中,方法参数是基本类型和引用类型的区别

方法参数是基本类型时,传递的是值。 ...方法参数是引用类型时,传递的是内存地址值 当参数是基本类型时,在调用方法时将值传递到方法中,运行方法,运行结束方法退出,对原本main中定义的变量没有任何操作(方法中没有return)。...当参数是引用类型时,比如:定义数组时,在堆内存中存储了数组的数据,返回这组数据的地址给了数组名,然后在调用方法时,传递的也是这个地址。...也就是说 ,当形式参数是基本类型时,方法传的只是值,实际上main 里的实际参数和外部方法里的形式参数是不同的两个东西,如果方法不返回值,change里不管怎么改变,与main无关。...而当形式参数是引用类型时,比如:形式参数是数组时,两个方法通过同一个地址,使用的是同一个堆内存里的数组,是同一个东西,所以外部方法里面改变了这个数组之后,main再调用也是改变之后的数组。

2.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java中的类型转换

    如果你觉得你的java基础不太好,看看这道题;如果你觉得你的java基础还不错,也看看这道题。金三银四的面试期,会碰到很多的笔试题。很多都是在考察基础和算法。...下面来解析一下这道题: 第一步:int类型的-1强转为byte类型 还是-1 第二部:byte类型的-1转化为char,由ascii码表,-1是不在表范围之内,因为默认char占2个字节,即8个bit,...所能存的最大值是65536个,所以char的数字范围是0-65535,把-1转为char,会倒着找,就是最大值65535, 第三步:char类型的65535转换为int还是65535 ASCII码对照表...基本数据类型 类型 字节数 大小 byte 1字节 最小值是 -128(-2^7);最大值是 127(2^7-1); boolean 至少1字节 这种类型只作为一种标志来记录 true/false 情况...; short 2字节 最小值是 -32768(-2^15);最大值是 32767(2^15 - 1); char 2字节 最小值是 \u0000(即为0);最大值是 \uffff(即为65,535);

    2.8K30

    Java中类型的转化

    1 问题 当我们在使用字符串进行数据的利用或者输出时,且数组中的内容类型为整数时,如果不转化为int,系统就会报错。...2 方法 方法1:str转化为int 在 Java 中要将 String 类型转化为 int 类型时,需要使用 Integer 类中的 parseInt() 方法或者 valueOf() 方法进行转换。...a = Integer.parseInt(str); // 方式1 int b = Integer.valueOf(str).intValue(); // 方式2 } 方法2:Java...中类型的相互转化问题,以上方法只是相对解决了少部分类型的转化,在java中,例如str转化为int,不像在python中那么方便,只需要一个int()函数即可,Java转化逻辑比较死板,相对于来说就比较复杂...,当然在一开始使用时,我们可以判断数据的类型,然后直接使用相对应的类型数组,但是我们也可以适当的掌握这些转化的方法。

    1.1K20

    Java中的null“类型”

    null是一个非常非常特殊的类型,对于每一个测试人员都要十分小心null的存在的可能性。同时null也让很多RD头疼,甚至连Java的设计者都成人null是一个设计失误。...null 到底是怎样的存在 在Java中有基本类型和引用类型,但是null却不属于上述两种,我们即不能声明一个变量为null类型,也不能将变量转换为null。...null的一些细节注意点 null的装箱拆箱的细节 先说一个Java的概念:装箱和拆箱 Integer count =100;装箱 int sum =count;拆箱 上面的代码清洗的解释了装箱和拆箱的过程...,装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。...null==null的结果是true,但是这里面特别注意:如果是两个null的引用变量那么首先要保证两个引入变量的类型完全一致。运算结果才会是true。

    2.6K30

    泛型在Java集合框架中是如何保证类型安全的?

    泛型在Java集合框架中通过编译期类型检查和类型擦除机制的结合,从根本上保证了类型安全,避免了传统非泛型集合中常见的ClassCastException。具体实现方式如下: 1....泛型擦除与字节码层面的保障 Java泛型采用类型擦除(Type Erasure)机制,编译后泛型信息会被擦除,替换为原始类型(如Object或限定类型)。...s) { // 实际实现 } } 桥接方法中的强制转换会在运行时检查类型,若不符合则立即抛出ClassCastException,阻止错误类型的元素被处理。...与数组的对比:更严格的类型安全 数组是协变的(例如Integer[]是Number[]的子类型),这会导致潜在的类型安全问题: Number[] numbers = new Integer[10]; numbers...正是这种"编译期预防+运行期兜底"的双重保障,使得泛型集合从根本上解决了传统集合的类型安全问题,成为Java开发中安全且高效的数据存储方案。

    31310

    Python 中什么是鸭子类型?

    我们将讨论 Python 编程中鸭子类型的确切含义。 Python 遵循的是 EAFP (请求原谅比请求允许更容易)而不是 LBLY (三思而后行)的哲学。EAFP 与“鸭子类型”风格有些联系。...Python 解释器接受同一变量数据类型的变化。这是一种动态打字行为。 许多其他编程语言,如 Java、swift 都是静态类型。我们需要用数据类型声明变量。...鸭分型的概念 前面我们已经讨论过 Python 是一种动态类型语言。但是,我们可以将动态方法用于自定义数据类型。让我们理解下面的例子。...在桌面类中,我们在代码()中将 ide 作为参数传递。一个 ide 是 VisualStudio 类的一个对象。...但是在鳄鱼类的例子中,它没有通过鸭子测试评估,因为它没有实现游泳()功能。 鸭子类型如何支持 EAFP 鸭子类型是最适合 EAFP 的风格,因为我们不需要关注对象的“打字”。

    88140

    【Java】Java中的引用类型(全面解读)

    在Java编程中,理解引用类型是至关重要的。引用类型不仅仅是指向对象的指针,而且还涉及到Java内存管理的方方面面。...本文将深入探讨Java中的引用类型,包括它们的种类、用法以及与内存管理相关的注意事项。 什么是引用类型? 在Java中,引用类型是指一种变量类型,它们用于引用对象而不是存储实际的数据值。...引用类型的种类 在Java中,引用类型主要分为四种: 强引用(Strong Reference):强引用是最常见的引用类型,它指向对象并阻止垃圾回收器对该对象进行回收。...结语 在Java编程中,理解引用类型是编写高质量代码的关键。通过合理使用不同类型的引用,可以更好地管理内存,避免内存泄漏和内存溢出等问题。...同时,对于不同类型引用的特性和用法有深入的了解,能够更好地设计出高效、健壮的程序。 通过本文的介绍,相信读者对Java中的引用类型有了更清晰的认识,并能够在实际开发中更加灵活地运用引用类型来管理内存。

    91310

    关于java中的类型转换

    作为java中的基础,类型转换不学好,以后的开发中可能会出现各式各样的bug,到那时你想改bug有可能都找不到!...然后赋值给dd变量 变量是double类型,所以结果是3.0 该例中先理清执行的顺序,先进行的是10/3的整数计算,得出了3,然后才是将这个3赋值给dd 2* dd = 10.0...最后运算后的是int类型,而赋值的变量是byte类型,大容量转小容量,精度受损所以报错。...在该例中,第一句代码并无报错,第二句代码先行完成的是类型转换将g变量强制转换成了byte变量 ,byte类型g / int类型3 得出 int类型3,出错的点在于变量的接收。...问题出在这里,大容量的int类型字面值存进byte类型b变量中,先进行转换,由于未加强制类型转换符,所以大容量转小容量-精度受损 解决方法1: int b = (byte)(int)g/

    38410

    Java中的数据类型

    Java是强类型语言 什么是强类型语言? 就是一个变量只能对应一种类型。而不是模棱两可的类型符号。...可以看到,javascript里面,可以用var来承载各种数据类型,但是在Java,你必须对变量声明具体的数据类型(Java10中也开放了var,目前我们讨论的版本为Java8) 。...这在某些场景下是不对的(比如你需要在http中传输id,当对方没有传输id时,你应该报错,但是由于使用了基本的数据类型,id拥有了默认值0,那么此时程序就会发生异常) 定义对象的成员,最好使用包装类型...Integer对象的缓存区 在程序中有些值是需要经常使用的,比如定义枚举时,经常会使用1,2,3作为映射值.Java的语言规范JLS中要求将-128到127的值进行缓存。...在VM初始化期间,可以在sun.misc.VM类的私有系统属性中设置并保存java.lang.Integer.IntegerCache.high属性。)

    1.4K40

    【Groovy】Groovy 方法调用 ( Java 中函数参数是接口类型 | 函数参数是接口类型 可以 直接传递闭包 )

    文章目录 一、Java 中函数参数是接口类型 二、函数参数是接口类型 可以 直接传递闭包 三、完整代码示例 一、Java 中函数参数是接口类型 ---- 在 Android 中经常使用如下形式的接口 :...OnClickListener 接口 , interface OnClickListener { void onClick() } 将 OnClickListener 接口对象 作为函数参数 , 传递到函数中...OnClickListener() { @Override void onClick() { println "OnClick" } }) 执行结果为 : OnClick 二、函数参数是接口类型...可以 直接传递闭包 ---- 如果 setOnClickListener 函数参数接收的是 1 个接口 , 接口中只有 1 个方法 , 那么可以直接向 setOnClickListener 方法中传递一个闭包...@Override void onClick() { println "OnClick" } }) // 传递一个闭包到 setOnClickListener 方法中

    5.8K40

    java中数值类型计算时是多地址,变量值会变换

    最近又在回头复习java基础,在运算符优先级中发现了自己理解的不足。...主要还是在自增和自减中有迷惑,今天的复习才发现,java中数值类型计算是多地址的,同一个变量的值可能在同一时刻并不相等 我们直接上代码看吧 package practice7; public class...等价于f = f + ++f; if ( n++ > 11) { System.out.println(n); }else { System.out.println("是这个...System.out.println(n + "======"); System.out.println(f + "*****"); } } 这只是一个简单的优先级运算,先自行猜测运算结果,我猜测 f 的输出是26...运行结果: 这里就需要我们在上面提到的一句话来解释了java中数值类型计算是多地址的,同一个变量 f 的值在同一时刻并不相等,先++的 f 已经是13,而 f 本身还是12 f += ++f; //

    21200

    C++友元&&命名空间&&数据类型&&内联&&重载&&缺省

    加上空间的名字来定义我们的命名空间,上面就是我们自己进行定义的两个命名空间,命名空间的存在的意义就是可以增加标识符的使用率,减少编程的过程中因为命名冲突而产生的影响,我们的命名空间里面定义的变量和函数就属于这个命名空间...; bool类型我们之前也接触过,num我们赋值的是大写的字母A,只要不是0就表示的是真的,我们打印输出这个布尔类型的数据,打印的结果就是1(实际上布尔类型的数据的打印的结果只能是0或者1),我们使用sizeof...计算大小,布尔类型的数据只会占一个字节,大大的节省了我们的内存空间 (2)引用类型 引用可以作为函数的参数 引用就是取别名,这个别名的符号和我们的取地址的符号是完全一样的,但是我们不要往取地址上面去想,...我们就理解为取别名就可以了; 这段代码是先让指针p指向的是num=10;然后改变指针的指向,我们的函数传递的是p指针,我们是使用&temp来进行接受的,这个里面两者的数据类型要相互匹配,同样是int*类型...; 6.函数缺省 必须从右边向左边进行缺省: 如果我们调用的时候,给了参数,计算的时候就会使用我们传递过去的参数,如果没有给定参数,编译器就会使用默认的参数。

    1.4K10

    Java 中到底是应该用接口类型 还是实现类的类类型去引用对象?

    如题,Java 中到底是应该用接口类型 还是实现类的类类型去引用对象?首先贴出答案: 应该优先使用接口而不是类来引用对象,但只有存在适当的接口类型时 。...(当然A demo=new A();是不可能的,因为接口是不能用来实例化对象的,但可以用来声明一个接口类型的引用变量)。...在第二版的《Effective Java 》中也有说到这也问题 Effective Java 2nd Edition, Item 52: Refer to objects by their interfaces...当然也存在向下转型, //p.batheSelf();替换为下面形式 ((Cat)p).batheSelf();//向下转型,可正常调用执行 参考文章: Java 中到底是应该用接口类型 还是实现类的类类型去引用对象...(当然A demo=new A();是不可能的,因为接口是不能用来实例化对象的,但可以用来声明一个接口类型的引用变量)。

    2.4K30
    领券