JAVA怎样重载操作符?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA怎样重载操作符?相关的知识,希望对你有一定的参考价值。
java 除了String 重载了“+” 和 “+=” 外(其实是用的append()方法)没有重载操作符了
那能实现2个对象相加吗?
比如Stu类里有name属性;
new2个Stu对象 s1,s2
当使用s1+s2的时候 ;实现的是2个对象的name字符串相加
等带高手解答~!
我估计是你由C转来的程序员,这和C/C++是不一样的
Java的一个目的是摒弃C/C++中的操作符重载,使得语言更简单、明确,避免大量重载运算法造成的混乱。
实际上Java中你想使用运算符表达的意义都可以使用方法来做,所以运算符重载就不必要了
+,Java会自动根据它的参数判断应该使用那个含义
两个对象+,会首先调用对象的toString(),然后使用字符串的+含义
学习Java,最好不要带有C/C++的思路,也不要刚开始就比较不同 参考技术A 还是两个字符串相加 s1.name + s2.name 或者 s1.getName()+s2.getName 参考技术B can't do that in java. 参考技术C 慢慢来,在项目中找答案, 我到现在 在项目中也只用到append 还没字符串相加
Java中方法的定义传参重载与递归
一、方法的定义
每个对象都有自己的行为,比如一只狗会跑会跑会叫等,我们把这些行为称之为方法,是动态的,可以使用这些方法来操作一个对象。
那么方法是怎样定义的呢?具体格式如下:
修饰符 返回值类型 方法名([参数类型 参数名1, 参数类型 参数名2, ...])
{
执行语句;
[return 返回值;]//若没有返回值,返回类型为void
}
方法定义示例如下(此处返回int类型):
/**
* 方法为求两个数之和
* @param a
* @param b
* @return
*/
public int twoSum(int a,int b) {
System.out.println("求两个数的和这个方法调用了呦!");
return a+b;
}
二、方法的参数
参数有“实参”和“形参”之分哦!那什么是形参,什么是实参呢?
执行者调用对象时传的是实参,方法接收的是形参。
形参和实参:
/**
* 形参和实参
* @author 蒙新
*
*/
public class TandV {
/**
* 方法为求两个数之和
* @param a
* @param b
* @return
*/
public static int twoSum(int a,int b) {
System.out.println("求两个数的和这个方法调用了呦!");
return a+b;
}
public static void main(String[] args) {
int x=3,y=5;
int sum=twoSum(x, y);//调用方法传参
System.out.println(sum);
}
}
总结:此时x和y就是实参,a和b就是形参。把x的值3赋给了a,把y的值5赋给了b。
注意:在有些方法中会牵扯对形参的数据进行操作,有时会改变形参变量的值,但是不会影响实参的值哦!
三、方法的重载
重载的定义:
同一个类中,
包含了两个或两个以上方法名相同,
方法的参数不同(个数、顺序、类型),
这就是方法的重载。
注意:
方法的返回值不作为重载的依据,编码规范要求重载方法的返回类型相同
示例:
//方法的重载
public class TestOverLoad {
public static void main(String[] args) {
System.out.println(add(1, 2));
System.out.println(add(1, 2, 3));
}
/**
* 求两个数之和
* @param x
* @param y
* @return
*/
public static int add(int x, int y) {
return x + y;
}
/**
* 求三个数之和
* @param x
* @param y
* @param z
* @return
*/
public static int add(int x, int y, int z) {
return x + y + z;
}
}
四、方法的递归
递归的定义:递归就是自己调用自己。递归必须有结束条件,没有结束条件一定会发生栈内存溢出错误
常见的递归算法有:阶乘、斐波那契数列等。
(1)阶乘:
/*阶乘的递归算法*/
public long multiply(int n) {
if (n <= 1) {
return 1;
} else {
return n * multiply(n-1);
}
}
(2)斐波那契数列:
/**
* 递归算法
* 斐波那契数列第n项
* @param n
* @return
*/
public static int fib(int n) {
if (n == 1 || n == 2) {
return 1;
}
return fib(n - 1) + fib(n - 2); //本项等于前两项之和
}
以上是关于JAVA怎样重载操作符?的主要内容,如果未能解决你的问题,请参考以下文章
Groovymap 集合 ( map 集合操作符重载 | *. 展开操作符 | 代码示例 )