不生成换行符

我使用以下代码: if (delanaloge.equals(stari)) { if (novi.equals("-")) { zdruzen = " -"; } else { zdruzen = zdruzen + " " + " - " + novi + "\r"; } nap = true; } \r附加以创建换行符,但它不会像我预期的那样生成换行符。 - 213 - 232 - 1321 如何在字符串中添加换行符? 答案 你可以用这个: public static String newline = System.getProperty("line.separator"); 来自: stackoverflow.com

_JAVA_OPTIONS、JAVA_TOOL_OPTIONS 和 JAVA_OPTS 之间的区别

我认为在两者之间进行比较会很棒_JAVA_OPTIONS和JAVA_TOOL_OPTIONS。 JAVA_OPTS包含在内是为了完整性。 我知道的: 到目前为止我发现: JAVA_OPTS 不是由 JDK 使用,而是由许多其他应用程序使用(请参阅这个帖子)。 JAVA_TOOL_OPTIONS 和**_JAVA_OPTIONS** 是将 JVM 参数指定为环境变量而不是命令行参数的方法。 至少被拾起java和javac 他们有这样的优先权: _JAVA_OPTIONS(覆盖其他的) 命令行参数 JAVA_TOOL_OPTIONS(被其他人覆盖) 我想知道什么 有没有官方文档比较一下JAVA_TOOL_OPTIONS和_JAVA_OPTIONS 之间还有其他区别吗JAVA_TOOL_OPTIONS和_JAVA_OPTIONS(优先级除外)。 哪些可执行文件会被拾取JAVA_TOOL_OPTIONS和_JAVA_OPTIONS(此外java和javac) 对可以包含的内容的任何限制JAVA_TOOL_OPTIONS和_JAVA_OPTIONS 官方文档 我无法找到任何有关的文档_JAVA_OPTIONS。的文档JAVA_TOOL_OPTIONS并没有说明差异: 由于无法始终访问或修改命令行,例如在嵌入式虚拟机或在脚本深处启动的虚拟机中,因此提供了 JAVA_TOOL_OPTIONS 变量,以便在这些情况下可以启动代理。 … 示例脚本 这是我用来解决这个问题的代码。 export JAVA_OPTS=foobar export JAVA_TOOL_OPTIONS= export _JAVA_OPTIONS="-Xmx512m -Xms64m" java -version # Picked up JAVA_TOOL_OPTIONS: # Picked up _JAVA_OPTIONS: -Xmx512m -Xms64m # java version "1.7.0_40" OpenJDK Runtime Environment (IcedTea 2.4.1) (suse-3.41.1-x86_64) OpenJDK 64-Bit Server VM (build 24.0-b50, mixed mode) javac -version # Picked up JAVA_TOOL_OPTIONS: # Picked up _JAVA_OPTIONS: -Xmx512m -Xms64m # javac 1....

-Djava.library.path=... 相当于 System.setProperty(java.library.path, ...)

我加载一个外部库,该库位于./lib。 执行jar时在控制台设置路径: java -Djava.library.path=./lib -jar myApplication.jar 在加载库之前在代码中设置路径: System.setProperty("java.library.path", "./lib"); 如果他们是等价的,为什么在第二个解决方案中Java找不到库,而第一个解决方案可以? 如果不是,有没有办法在代码中设置路径? 答案 一般来说,两种方法具有相同的净效果,即系统属性java.library.path被设置为值./lib。 然而 ,某些系统属性仅在特定时间点进行评估,例如 JVM 的启动。如果 java.library.path是这些属性之一(并且您的实验似乎表明了这一点),那么使用第二种方法将不会产生明显的效果,除了在将来调用时返回新值之外getProperty()。 根据经验,使用-D命令行属性适用于所有系统属性,而System.setProperty()仅适用于不仅在启动期间检查的属性。 来自: stackoverflow.com

-XMN JVM选项代表什么

我尝试搜索有关-XMN选项的Internet,但没有成功。 有人可以解释一下这是什么用途,我该如何使用它来调整JVM? 答案 从这里: -XMN:年轻一代的堆大小 年轻一代代表所有时间寿命短的物体。年轻一代物体位于特定位置进入堆,垃圾收集器经常通过。所有新对象都创建到年轻一代区域(称为"伊甸园")。当一个物体生存在2-3个GC清洁后仍然是"活着的"时,掉期将有一个"老一代":它们是"幸存者"。 还有一个更"正式"的消息来源IBM: -xmn 使用-xgcpolicy:gencon时,将新(托儿所)堆的初始和最大尺寸设置为指定值。等效于设置-XMN和-XMNX。如果设置-XMN或-XMNX,则无法设置-XMN。如果尝试使用-XMN或-XMNX设置-XMN,则VM不会启动,返回错误。默认情况下,-XMN根据您系统的功能在内部选择。您可以使用-verbose:大小选项来找出VM当前使用的值。 来自: stackoverflow.com

-xx:maxpermsize做什么?

具体来说,为什么要解决Permgen OutofMemoryError问题? 另外,答案的奖励点指向我指向JVM参数的文档… 答案 永久空间是VM使用的类,方法,内部化字符串和类似对象的地方,并且从未处理过(因此名称)。 这本oracle文章简洁地介绍了热点GC的工作和参数化,并建议您加载许多类(通常是应用程序服务器的情况,以及像Eclipse这样的IDE的情况): 对于大多数应用,永久一代对垃圾收集器性能没有明显影响。但是,某些应用程序动态生成并加载了许多类。例如,Javaserver页面(JSP)页面的某些实现。这些应用程序可能需要更大的永久生成才能举行其他类别。如果是这样,可以使用命令行选项-xx:maxPermsize =最大的永久生成大小。 注意其他甲骨文文档列出其他热点参数。 **Update :**从Java 8开始,Permgen空间和此设置都消失了。用于加载类和方法的内存模型是不同的,并且不限(具有默认设置)。您不应该再看到此错误了。 来自: stackoverflow.com

-xx之间的区别:+useparallealgc和-xx:+useparnewgc

它们是年轻一代垃圾收集的算法。 第二个(USEPARNEWGC)使用并发的持久发电垃圾收集自动激活(请参阅Java并发和平行GC)但是,两种平行算法之间是否存在差异? 答案 经过大量搜索,我发现的最好的解释是来自Java性能调整网站本月问题:1.4.1垃圾收集算法,2003年1月29日 Young generation garbage collection algorithms 这*(原始)复制收藏家*(默认启用)。 这并行复制收集器(使用-XX启用:+useParnewGC)。就像原始复制收藏家一样,这是一个停留世界的收藏家。但是,该收集器将复制集合在多个线程上并行,这比多CPU机器的原始单线程复制收集器(尽管不是用于单CPU机器)更有效。与原始的单读复制收藏家相比,该算法可能会加快年轻一代集合的速度。 这平行的清除收藏家(使用-XX启用:useParallealGC)。这就像以前的并行复制收集器一样,但是该算法是在多CPU机器上调整为千兆字节堆(超过10GB)的。该集合算法旨在最大程度地提高吞吐量,同时最大程度地减少停顿。它具有可选的自适应调整策略,该策略将自动调整堆空间大小。如果您使用此收藏家,则只能在旧一代中使用原始的标记 - 清扫收藏家(即,较新的旧一代并发收藏家无法与这个年轻一代的收藏家合作)。 从这些信息中,似乎主要区别(除了CMS合作外)是UseParallealGC支持人体工学虽然USEPARNEWGC没有。 来自: stackoverflow.com

::(双结肠)Java的操作员8

我正在探索Java 8来源并发现代码的这一特定部分非常令人惊讶: // Defined in IntPipeline.java @Override public final OptionalInt reduce(IntBinaryOperator op) { return evaluate(ReduceOps.makeInt(op)); } @Override public final OptionalInt max() { return reduce(Math::max); // This is the gotcha line } // Defined in Math.java public static int max(int a, int b) { return (a >= b) ? a : b; } 是Math::max类似方法指针?如何正常static方法转换为IntBinaryOperator? 答案 通常,有人会打电话给reduce方法使用Math.max(int, int)如下: reduce(new IntBinaryOperator() { int applyAsInt(int left, int right) { return Math.max(left, right); } }); 这需要大量的语法来打电话Math....

!=和=!在Java?

我在看一些模拟OCJP问题。我遇到了一个令人困惑的语法。这里是: class OddStuff { public static void main(String[] args) { boolean b = false; System.out.println((b != b));// False System.out.println((b =! b));// True } } 为什么输出之间会发生变化!=和=!? 答案 问题只是与您一起玩,使间距令人困惑。 b != b是通常的!=(不是平等)比较。 另一方面: b =! b更好地写作b = !b被解析为: b = (!b) 因此,这是两个操作员。 首先反转b。 然后将其分配给b。 分配操作员返回分配的值。所以,(b =! b)评估为true-这是您打印的内容。 来自: stackoverflow.com

.Class vs .Java

.class文件和.java文件有什么区别?我正在尝试让我的小程序上班,但目前我只能在Eclipse中运行它,我还不能嵌入HTML。谢谢 **编辑:那么如何使用JVM编译? 答案 .class文件是一个编译的.java文件。 .Java都是文字,是人类可读的。 .Class是二进制(通常)。 您可以通过转到命令行,导航到.java文件并运行,将Java文件编译到类文件中 javac "c:\the\path\to\your\file\yourFileName.java" 您必须在计算机上安装Java SDK(从Oracle),并确保可以在计算机路径环境变量中找到Javac.exe文件。 另外,请查看Java的**Lesson 1: Compiling & Running a Simple Program** 如果这尚不清楚,请对此答复发表评论,我可以帮忙:) 来自: stackoverflow.com

.class在Java中意味着什么?

有什么.class在Java中的意思?例如,如果我创建了一个名为的类Print。有什么Print.class返回? 答案 当你写时.class在班级名称之后,它引用了班级字样 - java.lang.Class表示信息的对象关于给定课。 例如,如果您的班级是Print, 然后Print.class是代表类的对象Print在运行时。这是由getClass()任何(直接)实例的方法Print。 Print myPrint = new Print(); System.out.println(Print.class.getName()); System.out.println(myPrint.getClass().getName()); 来自: stackoverflow.com

.jar 错误 - 无法找到或加载主类

我尝试将 HelloWorld 放入 .jar 文件中并运行它,但它不起作用。 javac HelloWorld.java java HelloWorld 它起作用了。 echo Main-Class: HelloWorld >manifest.txt jar cvfm HelloWorld.jar manifest.txt HelloWorld.class 并得到输出 added manifest adding: HelloWorld.class(in = 426) (out= 288)(deflated 32%) 然后我进入 java -jar HelloWorld.jar HelloWorld.jar 第一行有效,而第二行给了我一个错误: Error: Could not find or load main class path\HelloWorld.jar 当我尝试使用 64 位 jre7\bin、jdk1.7.0_51\bin、jdk1.7.0_51\jre\bin 中的 java.exe 文件打开它时,它与我得到的输出相同(在快速关闭的窗口中),如下所示 编辑:我尝试按照 aetheria 的建议进行操作,但没有成功。 java com.stackoverflow.user.blrp.HelloWorld 在路径中。 (echo Manifest-Version: 1.0 echo Class-Path: . echo Main-Class: com.stackoverflow.user.blrp.HelloWorld) >manifest.txt jar cvfm HelloWorld.jar manifest....

.jspf 文件扩展名是什么?

JSP 中的 .jspf 文件是什么? 答案 正如其他人所指出的,.jspf 文件是 JSP 片段。 <%@include file="/WEB-INF/jspf/example.jspf" %> 您会注意到此示例来自/WEB-INF/jspf目录。这意味着它在Web应用程序之外无法访问;无法构建可以检索其的URL。如果将它们与"普通" JSP文件相同的目录中,则可以构建这样的URL;例如,Tomcat将将页面作为文本文档检索。但是,前端网络服务器可以阻止这些URL。 我喜欢JSPF文件作为第一步重构大JSP页面。第一的步;动态包括和taglibs通常是更好的长期解决方案)。重构时,我相信将片段保持在其父档案附近;这是当具有阻止URL的Web服务器变得有用的时候。 来自: stackoverflow.com

.setBackgroundColor 与十六进制颜色代码 AndroidStudio

View targetView; targetView = (View)findViewById(R.id.mainlayout); 这有效但是 targetView.setBackgroundColor(Color.parseColor("#FFFFFF")); 这也不起作用 targetView.setBackgroundColor(Color.pasrsehexString("#FFFFFF")); 错误:无法解析方法"parseColor(java.lang.String)" 并且:无法解析方法’passrsehexString(java.lang.String)' 请有人帮助我,顺便说一下我正在使用 Android Studio。 答案 Java/Android 中有两个主要的颜色处理类。 第一个来自"普通"Java,可以在java.awt.Color。解码。 Color red = Color.decode("#FF0000"); 第二类适用于 Android,可以在以下位置找到android.graphics.Color。parseColor。 int red = Color.parseColor("#FF0000"); 所以你应该检查哪种Color您已导入到项目中的类。targetView.setBackgroundColor(Color.parseColor("#FFFFFF"));应该管用。 来自: stackoverflow.com

.toArray(new MyClass[0]) 或 .toArray(new MyClass[myList.size()])?

假设我有一个 ArrayList ArrayList<MyClass> myList; 我想调用 toArray,是否有性能原因需要使用 MyClass[] arr = myList.toArray(new MyClass[myList.size()]); 超过 MyClass[] arr = myList.toArray(new MyClass[0]); ? 我更喜欢第二种风格,因为它不太冗长,而且我假设编译器将确保空数组不会真正被创建,但我一直想知道这是否属实。 当然%20在%2099%%20的%20the%20cases%20it%20doesn%27t%20make%20a%20区别%20one%20way%20or%20the%20other,%20but%20I%27d%20like%20to%20keep 答案 与直觉相反,Hotspot 8 上最快的版本是: MyClass[] arr = myList.toArray(new MyClass[0]); 我使用 jmh 运行了一个微基准测试,结果和代码如下,显示具有空数组的版本始终优于具有预先调整大小的数组的版本。 基准测试结果(分数以微秒为单位,越小=越好): Benchmark (n) Mode Samples Score Error Units c.a.p.SO29378922.preSize 1 avgt 30 0.025 ▒ 0.001 us/op c.a.p.SO29378922.preSize 100 avgt 30 0.155 ▒ 0.004 us/op c.a.p.SO29378922.preSize 1000 avgt 30 1.512 ▒ 0.031 us/op c.a.p.SO29378922.preSize 5000 avgt 30 6.884 ▒ 0....

.war vs .ear文件

.war和.ear文件之间有什么区别? 答案 从GeekInterview: 在J2EE应用程序中,模块根据其功能包装为耳朵,JAR和WAR JAR:包含企业Java Bean(类文件)和EJB部署描述符的EJB模块包装为JAR文件,并带有.jar扩展名 战争:包含Servlet类文件,JSP文件,支持文件,GIF和HTML文件的Web模块被包装为带有.war(Web Archive)扩展名的JAR文件 EAR:以上所有文件(.jar和.war)均包装为带有.EAR(企业档案)扩展名的JAR文件,并将其部署到应用程序服务器中。 来自: stackoverflow.com