黑马程序员技术交流社区

标题: 为什么其他的运算符是运算,而String的+就变成连接符号了??? [打印本页]

作者: fenzheng    时间: 2014-4-4 17:25
标题: 为什么其他的运算符是运算,而String的+就变成连接符号了???
本帖最后由 梦里花-静 于 2014-4-6 16:06 编辑

//: AllOps.java
// Tests all the operators on all the
// primitive data types to show which
// ones are accepted by the Java compiler.
class AllOps {
// To accept the results of a boolean test:
void f(boolean b) {}
void boolTest(boolean x, boolean y) {
// Arithmetic operators:
//! x = x * y;
//! x = x / y;
//! x = x % y;
//! x = x + y;
//! x = x - y;
//! x++;
//! x--;
//! x = +y;
//! x = -y;
// Relational and logical:
//! f(x > y);
//! f(x >= y);
//! f(x < y);
//! f(x <= y);
f(x == y);
作者: shi0000    时间: 2014-4-4 21:59
int型+int等型时是运算符,当int等型+String型时会把后者改为int型,String+String时才是字符串连接。这是程序默认的。
作者: love~陌    时间: 2014-4-5 10:31
帅锅,+(这个东西)在Java中只有三种用途:
相加
正号(即表示正数)
实现字符串相连



作者: love~陌    时间: 2014-4-5 10:36
  1. public class  Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 //这里c是char类型,类型提升,将自动转为int类型,然后与1(int型)相加
  6.                 System.out.println('c'+1);//结果为100
  7.                 //这里的c是String类型,+在这里表示相连
  8.                 System.out.println("c"+1);//结果为c1
  9.         }
  10. }
复制代码


作者: zhangbingyuan    时间: 2014-4-5 13:05
上面有个人说的int + String --->int,这个貌似有问题。
int+(char、short)--->int   这是自动类型提升。因为char,short等都可以隐式地转化为int
而String+ (int、char、short......)---->String   这里的+号两端如果有一端是String类型的,那么用“+”连接的话就会自动转换为String类型。
楼主可以亲自验证下。希望可以帮到你。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2