Java中关于System.out.println/print的运算规则

2023-11-18

一、输出到控制台

System.out.println(msg); 输出一个字符串, 带换行(\n)。
System.out.print(msg); 输出一个字符串, 不带换行(\n)。
System.out.printf(format, msg); 格式化输出。
注:print要想换行:+ "\n"

二、pirntln、print的运算规则

在遇到第一个字符/字符串之前,所有的数遇到加号即相加。
当遇到任意字符后,加号就变成了字符/字符串的拼接。
代码示例如下:

import java.util.*;
public class A {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int i = 3;
        String ch = sc.nextLine();
        System.out.println(2 + 3 + "K" + 4 + 5);//可以用加号不能用减号
        System.out.println(2 + 3 + "" + 4 * 5);//*,/,%不会变成拼接,因为根据java运算符的的运算顺序来推得
        System.out.println(2 + 3 + "" + 4 / 5);
        System.out.println(2 + 3 + "" + 4 % 5);
        System.out.println(2 + 3 + "" + (6 % 5));//*,/,%运算加括号和不加括号都一样
        System.out.println(2 + 3 + "" + (4 + 5));//"+","-"加括号就不一样了先计算括号里面的然后再按步计算
        System.out.println(ch + 2  + 3 + "" + 4);//字符串变量也要遵守规律
    }
}

输入:

asd

输出:

5K45
520
50
54
51
59
asd234

解释:

第一个输出2+3+“K”
从左到右先计算2+3,结果为5是int类型,这里的"+"号是计算符号,而后“+”号是当字符串连接符号处理,所以最后int的5和string类型的“K”连接后生成新的string,“5K”
最后一个输出ch+2+3+“”+4
也是从左到右计算,因为ch是字符串变量,而后跟“+”号是当字符串连接符号处理,所以是“asd234”
其后的“+”号都当成了字符串连接符号

总之,当“+”号前后有字符串出现时,就当做字符串连接符号处理了。`

补充:
1.当静态初始化字符串数组或字符串时,也有上述情况。

案例如下:

String sname = "学生" + 1 + 2;//"+"号被当作字符串连接符号处理
String sname = "学生" + (1 + 2);//先计算括号内的,即还没遇到第一个字符或字符串,“+”号还是运算符号。

//一维字符串数组
String[] a = {"xue" + 1,"xue" + 2 + 3};
        for (int i = 0;i < 2;i ++)
            System.out.println(a[i]);
        String[] b = {"xue" + 1,"xue" + (2 + 3)};
        for (int i = 0;i < 2;i ++)
            System.out.println(b[i]);

输出:

学生12
学生3
xue1
xue23
xue1
xue5

2.当是char类型时,计算机语言使用ascii。

  	char a = 'A';//定义了一个字符'A',其ascii值是65
    System.out.println(a + a);
    System.out.println(a + "" + a);
    System.out.println(a + ' ' + a);//''单引号为char类型字符,其中不能空,所以我在这里用了空格(ascii=32);""双引号为字符串,可以为空
    System.out.println(a + "李" + a);

输出:

130
AA
162
a李a

总结:

说白了,就是考虑java中运算符的优先级。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中关于System.out.println/print的运算规则 的相关文章

随机推荐

  • 拿什么拯救你? rm -r

    天雷滚滚 天雷滚滚 天雷滚滚 作为一个Linux程序员 你能碰到的最伤心的事情 莫过于 编译了一整天的工程 不小心被rm r掉了 错误的执行了rm r 把文件系统都删除了 在嵌入式板子和PC之间切换的时候 不小心删错了目标 不要说你没有遇到
  • C++之数组

    C 基础 3 数组 3 1 一维数组 3 1 1 一维数组定义方式 3 1 2 一维数组数组名 3 2 二维数组 3 2 1 二维数组定义方式 3 2 2 二维数组数组名 3 数组 3 1 一维数组 概述 数组就是一个集合 里面存放了相同类
  • 进程、线程、管程、纤程、协程概念以及区别

    进程 进程是指在操作系统中能独立运行并作为资源分配的基本单位 由一组机器指令 数据和堆栈等组成的能独立运行的活动实体 进程在运行是需要一定的资源 如CPU 存储空间和I O设备等 进程是资源分配的基本单位 进程的调度涉及到的内容比较多 存储
  • WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connec

    python安装包错误 网络原因 直接改用阿里云镜像 然后再安装 pip config set global index url https mirrors aliyun com pypi simple 这就修改成功 接下来正常执行安装命令
  • docker 编辑容器内文件

    docker 编辑容器内文件 近期在学习docker 为编辑容器中文件 可以使用以下几种方法 特此记录 方法1 在容器中修改 使用vi命令编辑文件 注 如果vi命令没有 可以使用yum y install vim或者apt get inst
  • js-table2excel

    eslint disable let idTmr const getExplorer gt let explorer window navigator userAgent ie if explorer indexOf MSIE gt 0 r
  • 流程图中的实线_XMind如何在流程图中绘制实线箭头?XMind使用技巧

    如何利用xmind制作自己的思维导图 你好 建议你可以这样试试看 打开画图工具点击上方栏目 思维导图 在跳转专的页面点击 立即属体验 进入在线绘制界面 在画布的四周有很多的工具栏 这些在绘制的过程中都是可以使用的 首先 将中心主题进行确立
  • Java中StringBuffer类常用方法介绍

    StringBuffer类的介绍 StringBuffer是字符串缓存区 当new的时候是在堆内存创建了一个对象 底层是一个长度为16的 字符数组当调用添加的方法时 不会再重新创建对象 在不断向原缓冲区添加字符 查看字符串缓存区容量和长度
  • 快速傅氏变换之旅(一) 概念简介 3

    1 蝶形变换 普通的FFT算法称为基2的FFT算法 这种算法的核心是蝶形变换 长度为n 2 k1的变换共需要做 k1 n 2 次蝶形变换 如上图所示 若需变换数据表示为一个复数数组c 则每次蝶形变换有2个输入 c i c i s 两个输出
  • JS解密日记

    前言 JS混淆是通过改变JS代码的语法结构来使代码难以阅读和理解的技术 然而 请注意 混淆并不能真正保护您的代码 因为它仍然可以被解密和恢复其原始形式 直接上源代码 eval function p a c k e r e function
  • C11:mutex和lock_guard的使用.

    在C 11中 引入了有关线程的一系列库 且都在std命名空间内 下面演示一个使用线程的例子 非常的简单 引入了thread和mutex头文件 include
  • 攻防世界 inget

    打开网页提示 Please enter ID and Try to bypass 输入id绕过 尝试一下万能钥匙 尝试要不要符号闭合 http 61 147 171 105 49280 id 1 or 1 1 加个单引号成功 http 61
  • 【菜鸟C++学习杂记】ASCII码转换和显示

    笔者今年刚考上华东某高校的计算机研究生 本科虽是计算机学院 但期间主攻C 和Unity游戏开发 研究生属于小跨到计算机科学与技术 目前在进行硕导给的假期期间学习C 的任务 此类杂记主要记录下编码过程遇到的一些有趣的小知识 在某网课遇到了一个
  • 运用PL/SQL从1~100(包含边界)偶数之和

    1 第一种 方式实现 代码 set serveroutput on declare number integer 0 i integer 0 begin while i lt 100 loop number number i i i 2 e
  • 巴比特

    摘要 据 科创板日报 报道 当地时间5月9日 Meta宣布开源了一种可以横跨6种不同模态的全新AI模型ImageBind 包括视觉 图像和视频形式 温度 红外图像 文本 音频 深度信息 运动读数 由惯性测量单元或IMU产生 ImageBin
  • 为什么需要进程间通信??

    进程是一个独立的资源分配单元 不同进程 这里所说的进程通常指的是用户进程 之间的资源是独立的 没有关联 不能在一个进程中直接访问另一个进程的资源 例如打开的文件描述符 但是 进程不是孤立的 不同的进程需要进行信息的交互和状态的传递等 因此需
  • 微信公众号支付H5调用支付详解

    原文地址 http blog csdn net fengshizty article details 45564685 微信公众号支付 最近项目需要微信支付 然后看了下微信公众号支付 虽然不难 但是细节还是需要注意的 用了大半天时间写了个d
  • [Java]JAVA获取实体与List 数组的转换

    public class BeanToArray private String beanNames private Object values public BeanToArray public BeanToArray String bea
  • vs添加第三方库详解

    vs添加第三方库详解 一 编写库所生成的文件 核心文件 二 两种使用库的方式 此时添加一个Pro工程调用这个库 三 库导出函数时候的细节情况 四 新建工程使用这个库 以前总是不知道怎么使用第三方库 每次想学习一个库进行开发 总是遇到各种各样
  • Java中关于System.out.println/print的运算规则

    一 输出到控制台 System out println msg 输出一个字符串 带换行 n System out print msg 输出一个字符串 不带换行 n System out printf format msg 格式化输出 注 p