刚刚开始学习java,似乎无法弄清楚这一点.我正在学习learnjavaonline.org上的教程,它教你一些事情,然后要求你编写一个代码来做一个特定的事情,然后检查输出以查看它是否正确.问题是,如果它不正确,它没有说明原因,或者给你一个正确代码的例子.
它希望我使用所有基元输出一个字符串"H3110 w0r1d 2.0 true"
我想出了这个
public class Main {
public static void main(String[] args) {
char h = 'H';
byte three = 3;
short one = 1;
boolean t = true;
double ten = 10;
float two = (float) 2.0;
long won = 1;
int zero = 0;
String output = h + three + one + ten + " " + "w" + zero + "r" + won + "d " + two + " " + t; …Run Code Online (Sandbox Code Playgroud) 我读过一些关于append()的文章比+快得多,但是原因是什么,为什么我们会使用+ over append()呢?谢谢!
有人能解释为什么Java在以下示例中连接字符串和整数吗?
public class main {
public static void main(String[] args) {
System.out.println("test" + 5);
System.out.println(5 + "5");
}
}
Run Code Online (Sandbox Code Playgroud)
与Python的+运营商实现有什么不同.
在Python中,这提出了一个TypeError:
"5" + 5
Run Code Online (Sandbox Code Playgroud) 我正在尝试连接两个字符串,一个字符串具有某个值,另一个字符串具有空值。
例子:
String string1="Great"
String string2="";
Run Code Online (Sandbox Code Playgroud)
并使用 concat 函数和 + 运算符连接这两个字符串
例子:
String cat=string1.concat(string2)
String operator=string1+string2
Run Code Online (Sandbox Code Playgroud)
根据我的理解,当在 concat 函数中使用空字符串时,由于 string2 为空,因此不会创建新的引用。但是在使用 + 运算符时,将在字符串池常量中创建一个新引用。但在下面的代码中,使用 + 运算符时不会创建新引用。
public class Main {
public static void main(String[] args) {
String string1="Great",string2="";
String cat=string1.concat(string2);
if(string1==cat)
{
System.out.println("Same");
}
else
{
System.out.println("Not same");
}
String operator=string1+string2;
if(operator==string1)
System.out.println("Same");
else
System.out.println("Not same");
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
字符串 1:69066349
猫:69066349
相同的
字符串1:69066349
接线员:69066349
不一样
从上面的代码来看,由于它使用 + 运算符,变量 : 运算符的引用应该引用新内存,但它指向 string1 引用。请解释一下上面的代码。
我在项目中看到了java代码,它从各种参数构造一个文件名.java代码是这样的
String file = null;
String fileDirSeperator = System.getProperty("file.separator");
String pwd = System.getProperty("user.dir");
file = pwd + fileDirSeperator + "properties" + fileDirSeperator + folder_name + file_name;
Run Code Online (Sandbox Code Playgroud)
我想知道我是否应该StringBuffer代替你String.我知道将任何内容附加到String会创建新对象,所以我想我应该StringBuffer.
我可以知道你的建议吗?
也,
file = pwd + fileDirSeperator + "properties" + fileDirSeperator + folder_name + file_name;
Run Code Online (Sandbox Code Playgroud)
在上面的文件名构造中,是否会创建6个对象(每个变量一个)?
问题很简单,怎样才能更好地避免非占用内存的使用呢?例如,假设我们有 aString s = "Test"并且我们想添加1它,使其变为Test1。我们都知道s获取一个内存位置,如果我们使用StringBuilder,Test1将会得到一个新的内存地址,否则它将保留在s原来的位置,如果我们使用呢concat?