通过一个软构问题了解System.out.println

为什么要用log4j替代System.out.println? 这里是修真院后端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析后端知识/技能,本篇分享的是: 【为什么要用log4j替代System.out.println? 】 大家好,我是IT修真院上海分院第2期的学员蒋新益,一枚正直纯洁善良的JAVA程序员 今天给大家分享一下,修真院官网JAVA任务一,深... 阅读详情

一.一个问题

突然看到一个问题,看了别人的答案觉得不是很理想。好像扭曲了问题核心。

	public static void main(String[] args) {
		
      if(...)
      {
    	  System.out.println("a");
      }else
      {
    	  System.out.println("b");
      }
      
	}

问怎么填能输出ab?
有的同学使用了很多方法,但只能输出a \n b或ab\n这样的结果。我觉得如果要输出这种结果,你不如直接System.out.println(“a”)然后想办法扭到错误分支。但是我觉得这个问题最主要还是这个格式如何达到ab漂亮在这里插入代码片的形式,我们知道如果调用println肯定会把a,b分开。那么有没有办法真的输出ab呢我想是有的。

二.System.out.println

这个方法查阅jdk我们知道System是系统类,out是里面一个静态流实例,println是一个静态方法。
顺带推荐一个中文jdk文档http://www.matools.com/file/manual/jdk_api_1.8_google/overview-summary.html

我们想要改变println不如从流入手。
我的主要出发点就是去掉该死的换行符,一个想法是,为了防止输出换行符,我们不如在判断条件中关掉这个流,自己执行命令,让底下的println不能执行,这样给了我们很大的操作空间。

三.匿名类

Java提供了一种语法,允许我们在创建时定义类。这就叫匿名类。
new 类名
{
字段,方法。
}
这个new出来的对象是继承自类名。

四.我们可以轻易实现这个想法啦

我们在if判断中用匿名类创建一个对象,自己输出ab让其把流关闭,同时返回一个布尔真值,让其不妨碍其他判断。
这样得到的数据就是标准的‘ab’输出,不带任何讨厌的回车。一个完整的字符串。

public class Test {

	public static void main(String[] args) {
		
      if(new Object()
    		  {public boolean test()
    	             {
    			        System.out.write('a');
    			        System.out.write('b');
    			        System.out.close();
						return true;}}.test()||...)
      {
    	  System.out.println("a");
      }else
      {
    	  System.out.println("b");
      }
	}

}

在这里插入图片描述
这个方法有很多优点,你可以向后加任意的判断条件,绝对不会影响我输出’ab’,为什么我选用System.out.write呢,因为这样处理其实a,b是在一次输出后得到,而不是两次输出。详情见jdk文档。
我觉得这个做法虽然简单也比较笨,但的确做到了标准的ab,绝对没有任何换行符干扰,并且无论在什么情况下都可以输出,进行绝对完美的扩展。
不带任何回车的ab字符串这才是我爱的味道。

J-Flash手动添加华大HC32F460型号全攻略 在嵌入式开发中,Flash编程算法是连接调试工具与微控制器的重要桥梁,它定义了芯片存储器的擦除、编程和校验等底层操作规范。其原理是通过调试接口将算法代码加载到目标芯片的RAM中执行,从而实现对Flash存储器的访问与控制。这项技术的核心价值在于打破了工具链对芯片型号的固有支持限制,使得开发者能够灵活适配各种新兴或定制化的微控制器。在工程实践中,当面对J-Link等主流调试器官方支持包更新滞后时,手动添加芯片型号成为保障开发效率的关键技能。本文以华大半导体的HC32F460系列MCU为例,详细解析了如何通过配 阅读详情

相关推荐

解决Qt平台插件初始化失败:This application failed to start because no Qt platform plugin could be initialized

本文深入解析了Qt应用程序启动时常见的‘platform plugin’初始化失败报错,指出其核心在于环境变量冲突或多版本Qt共存导致的插件路径混乱。文章提供了从环境变量检查、路径调整到文件补全的完整解决方案,并给出了使用windeployqt工具等预防性开发实践,帮助用户和开发者彻底解决这一经典问题。

weixin_29229261的博客 2210

java一条System.out语句打印多个变量

int a = 1111; int b = 2222; System.out.println(a+" , "+b);    //通过“+”对字符串进行拼接 System.out.printf("%d,%d",a,b);    //通过占位符,打印多个变量   占位符介绍(printf支持的格式):           %c        单个字符            %d      ...

CrayonK的博客 2万+

基础矩阵、本质矩阵、单应矩阵

基础矩阵是一个 3×3 的秩为2的矩阵,用于描述两个不同视图(或称为图像)之间对应点的几何约束。更具体地说,如果你有两幅图像,分别从两个不同的相机或者相机位置拍摄,那么基础矩阵可以用于找到一个图像中的点在另一个图像中的对应点。本质矩阵也是一个 3×3 的秩为2的矩阵,与基础矩阵非常类似。当两个视图(图像)之间的场景是一个平面或者两个视图之间仅有旋转和平移时,可以使用单应矩阵来关联这两个视图。这三个矩阵都是在计算机视觉中广泛应用的基础工具,但它们适用于不同类型的视图和场景。给定两个图像中的一对对应点。

Gloamirror的博客 1330

System.out.println()的详细解释

System.out.println()的详细解释

各位多多关照 6403

手把手教你用Cesium和RayMarching实现逼真体积云(附完整Shader代码)

本文详细介绍了如何利用Cesium和RayMarching技术实现逼真的体积云效果,包括环境准备、核心逻辑、云层建模和光照增强等关键步骤,并提供了完整的Shader代码。通过噪声函数选型、动态风场模拟和多重散射近似等技术,开发者可以在数字地球可视化项目中创建沉浸式天气效果,显著提升场景的真实感。

weixin_29230649的博客 417

11、系统稳定性分析与李雅普诺夫函数的应用

本文深入探讨了李雅普诺夫函数在系统稳定性分析中的核心作用,重点介绍了时变与时不变系统的稳定性判据差异,以及巴尔巴拉特引理在处理非自治系统中的应用。文章还阐述了正线性系统与严格正实传递函数的性质及其在非线性控制系统中的重要性,并展示了李雅普诺夫函数在评估主导时间常数和设计快速干扰抑制控制策略方面的实际应用。通过具体示例和流程图,系统地总结了李雅普诺夫方法在稳定性分析、性能评估与控制器设计中的多维度价值,同时指出了当前挑战与未来发展方向。

Jerry的专栏 93

Java 运算符

Java运算符分成以下几组: 算术运算符 关系运算符 逻辑运算符 赋值运算符 其他运算符 1.算术运算符: 注意:自增(自减)在前面和在后面的区别: ++y(¬¬y):先将 y 的值自增(自减)1,然后再在当前表达式中使用 y 的值。 y++(y¬¬):先在当前表达式中使用 y 的值,然后再将 y 的值自增(自减)1。 示例如下: int a = 25; int b = 4; int ...

Brave的博客 464

ardupilot BMI088加速度陀螺仪学习

本节主要记录ardupilot 中BMI088传感器的学习过程,欢迎批评指正。BMI088是一款高性能6轴惯性传感器,由16位数字三轴±24g加速度计和16位数字三轴±2000°/ s陀螺仪组成。 BMI088允许高精度测量方向和沿三个正交轴的运动检测。BMI088具有高振动鲁棒性和3 x 4.5 x0.95mm³的小尺寸,是用于无人机和机器人应用等恶劣环境的高性能IMU中的独特产品。 BMI088专门设计用于有效抑制由于PCB上的共振或整个系统的结构而可能发生的振动。 除了高振动稳定性外,BMI088的出

陌城烟雨 2056

java快速入门知识整理:9、java数据类型:布尔型(boolean)

一、布尔型(逻辑型)简单说明 二、代码演示说明 package t09_布尔类型_boolean; /** * boolean 布尔类型 * 表示真(true)、假(false)两种状态,java中只有两个字面量值:true、false */ public class TestBoolean { public static void main(String[] args) ......

鲁迷那的专栏—坚持实践后再写出来! 4279

知识库构建革命:基于Agent的智能检索系统设计

本文聚焦“基于Agent的智能检索系统”这一前沿技术,系统讲解其设计逻辑、核心技术与落地方法。我们将覆盖从基础概念(如Agent如何“理解”知识)到实战代码(如何用Python搭建原型系统)的全链路内容,帮助技术开发者、企业知识管理负责人理解这一技术为何能颠覆传统知识库。本文将按“问题引入→核心概念→技术原理→实战落地→未来趋势”的逻辑展开:先用“老图书馆的困境”故事引出传统知识库的问题;再用“智能图书管理员”类比解释Agent如何革新检索;接着拆解NLP、对话管理、知识推理等核心技术;

AI智能探索者的博客 728

STM32实战开发(150):基于STM32的智能电力负荷控制系统开发

本文介绍了基于STM32的智能电力负荷控制系统的设计与实现,涵盖了硬件设计、软件设计、负荷预测与控制等多个方面。该系统能够实时监控电力负荷,预测未来负荷变化,并根据预测结果自动调节电力负荷,防止电网过载或浪费。未来,我们可以进一步优化该系统,加入更多的传感器数据,提升预测算法的精度,并结合大数据与云计算技术实现更为强大的远程控制与数据分析功能。

2201_76125393的博客 715

Java的System.out.println()深入解析理解

在Java程序(特别是控制台)中常用System.out.println()语句来输出信息,从开始学习Java就知道用它来输出Hello World,没有深究其实现原理,现在查阅文档、源代码后记录一下。 首先查阅文档和源码可知System是java.lang包里的一个final类,而每个Java程序是默认import java.lang.*的,因此即使程序中没有手动导入,也可访问到System类。 main()方法是static修饰的,根据Java语法,它只能调用static方法和变量,那么查看System

代码与诗 3万+

mabl:AI原生测试自动化平台的基础使用

mabl是一个基于人工智能和机器学习的云原生测试自动化平台。它通过使用先进的技术,如机器学习,自动创建和执行测试,自动分析测试结果,并根据需求的变化自动适配和维护测试。这样的自动化过程极大地提高了软件测试的效率和准确性。mabl的口号是 “You write code, mabl tests”,意味着开发者只需关注编写代码,而测试工作则可以交给mabl来完成。mabl的平台支持多种测试类型,包括 Web、App、Api、可访问性和性能测试,使得团队能够更快速、更有信心地发布软件。

blues_C的博客 3661

深入OpenJDK源码--你真的了解System.out.println吗?

目录一、前戏二、JVM源码分析三、坑?四、总结 一、前戏   可能不少小伙伴习惯在代码中使用sout打印一些信息,就像这样: System.out.println("hello world!")   做为一位资深干码人,本着弘扬党求真务实的精神,必须得来看看这个sout有何玄机~~   首先看调用就知道,out是System类的一个公共静态成员变量,进入System.java中: public final static PrintStream out = null;   嗯,不止是public,还是fi

黄智霖的博客 8495

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

java 中关于System.out.println()的问题

Java 的输出知识1.System.out.println()不能直接写在类中,例如:因为在 Class A{       //成员变量       //构造方法       //普通方法       //内部类}如果硬是想使用System.out.println("我想输出!"),可以加上一个大括号,让他成为普通块,所谓的普通块就是将普通方法去掉前面的声明,本身也是属于普通方法。即:  2.p...

子航 3万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

对于System.out.println简单了解

System.out.println很多人都是处于用的阶段,并没有深入的了解,我也是 之所以来了解这个东西是因为在本地开发的时候启动项目的时候发现内存不足了,这个问题就很纳闷,明明刚刚还是好好的,突然就内存不足了,想到在之前写了几个System.out.println输出,我把这几个System.out.println删除运行就没有这个情况了。 这才让我有了了解System.out.println的想法 System.out.println 分三段system、out、println system属于Jav

TrayLei的博客 8365

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

你了解System.out.println()的真正含义吗?

在Java编程中,我们常常用 System.out.println(); 来输出字符串,也许我们都已经猜到println()是方法名,但System是什么,out又是什么呢?  其实System是java.lang里面的一个类,如下图:     而out就是System里面的一个静态数据成员,而且这个成员是java.io.PrintStream类的引用。如下图,被关键字static修饰的成员可...

writebook2016的博客 14万+

Java System.out.println()的简单理解

在Java中,是用于将输出打印到控制台的语句。在这个语句中,out是System类的一个静态成员变量,它是一个类型的对象。out对象是System类的标准输出流。它提供了一系列方法来打印各种数据类型的值,并将其显示在控制台上。常用的方法包括println(打印并换行)、print(打印但不换行)等。使用,您可以将消息、变量的值或任何其他需要在控制台上显示的内容输出到标准输出流。

qq_67986576的博客 6015

java system out_Java中System.out.println的含义是什么?

实际上, out是System类中的一个静态成员(不是.NET中的),是PrintStream一个实例。 println是PrintStream类的正常(重载)方法。实际上,如果out / err / in是类,由于命名约定 (忽略语法),它们将用大写字母( Out / Err / In ) 命名 。System是一个类,有一个公共静态字段。 所以更像class System { public ...

weixin_33799059的博客 4408

【Java】System.out.println

System.out.println() System.out.println是一个Java语句,一般情况下是将传递的参数,打印到控制台 System是Java.lang包中的一个final类,该类提供的设施包括标准输入、标准输出和错误输出流、访问外部定义的属性和环境变量,一种加载文件和库的方法,以及用于加速复制数组等一部分的使用方法。 out是System类的静态成员字段,类型为PrintSt...

Ankie_的博客 1万+

java中system.out.println关于out的理解

在Java编程中,我们常常用System.out.println()方法来输出,在集合中我经常看到使用方法引用的方式来遍历集合元素:xxx.foreach(System.out::println);也许我们都已经猜到println()是方法名,System是类名,但out又是什么呢? 通过查阅api文档,我们可以发现,out是System类的一个field,我们经常翻译成“域”、”属性”、“字段”...

weiyi_fan的博客 4278

慎用System.out.println!!!

初学者一般在开发中或者调试bug的时候,都会习惯性的使用System.out.println语句,输出到控制台中,观察数据是否正常。开发或者调试完毕,很可能就忘记删除,直接就发布到生产中去了。 问题导入 有童鞋会说,那有啥关系的,不就是控制台多打印一些日志嘛。那今天老师就和童鞋们分析一下,System.out.println输出语句对服务性能的影响。 场景设置 假如你的服务对性能要求极高,...

林老师带你学编程 8958

【JAVA】system.out.print、System.out.println和System.out.printf输出

一、 System.out.print() \\ 不换行输出 二、System.out.println() \\换行输出 还有一种方式:System.out.print("\n"); \\也可以换行。 三、System.out.printf package test; public class Main { public static void main(St...

【敦厚的曹操】的专栏 4932

System.out.println() 源码解析

我们几乎每个人都写过这么一个程序 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } 代码很简单,只有一条简单的 System.out.println() 函数,那么这个函数是如何实现的,可以结合源码来分析一下。 System...

qq_43575159的博客 4325

System.out.println()底层原理是什么?

一、概述 在Java编程中,我们用到最多的或许是System.out.println()了,用这个代码可以输出字符串, 比如最基本的程序,为什么可以直接用System.out.println()去做输出呢: 1 public class HelloWorld { 2 public static void main(String[] args) { 3 System.out....

weixin_36775239的博客 2459

【java踩坑之路】问题总结:关于调用System.out.print()无法打印,而System.out.println却可以打印问题

背景 最近在学习Kotlin,在学习过程中发现了一个问题,发现了一个很神奇的问题,困扰了好久。特此记录。 问题描述 使用System.out.print(“test”); 在logcat中看不到日志,将print替换成println就可以看到。 代码 代码比较简单,只把部分测试关键代码附上,大家可以先别看答案,猜测一下是否会打印。 // 例子1,直接使用print输出。 System.out.print("111111111111111"); // 例子2, 连续使用print输出 System.out.

a594218234的博客 7263
上一篇: 软件构造——equals方法与hashcode方法
下一篇: 软件构造第四章——复用软件评价与开发
入过栈你
博客等级 码龄7年 2粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值