我什么时候应该使用布尔而不是布尔值?我的意思是,为什么我要在一个应该包含"true"或"false"的变量中有一个空值.一个自发的答案(对大多数人来说)将是值,如果值未知.即,如果我们不知道该值是真还是假.但是从编程的角度来看,我认为使用布尔可能会破坏代码,因为我们不知道里面是什么.所以,我认为使用原始类型比包装更好.如果我错了,请纠正我.
我有以下代码
public static void main(String... args) {
String s = "abc";
System.out.println(s.hashCode());
String s1 = " abc ";
System.out.println(s1.hashCode());
String s2 = s.trim();
System.out.println(s2.hashCode());
String s3 = s1.trim();
System.out.println(s3.hashCode());
System.out.println();
System.out.println(s == s1);
System.out.println(s == s2);
System.out.println(s == s3);
}
Run Code Online (Sandbox Code Playgroud)
OP:
96354
32539678
96354
96354
false -- Correct
true -- This means s and s2 are references to the same String object "abc" .
false -- s3=s1.trim()... which means s3="abc" yet s==s3 fails.. If the above conditon were to be …Run Code Online (Sandbox Code Playgroud) 我有以下代码..
public static void main(String[] args) {
int i = 1234;
int j = 1234;
int k = 4321;
long l1 = System.nanoTime();
if (i == j) {
System.out.println("equal");
}
System.out.println(System.nanoTime() - l1);
l1 = System.nanoTime();
if (i != k) {
System.out.println("equal");
}
System.out.println(System.nanoTime() - l1);
l1 = System.nanoTime();
if (i == k) {
System.out.println("equal");
}
System.out.println(System.nanoTime() - l1);
l1 = System.nanoTime();
if (i != j) {
System.out.println("equal");
}
System.out.println(System.nanoTime() - l1);
}
Run Code Online (Sandbox Code Playgroud)
现在当我运行这个程序时,OP是:
1.
equal
190295
equal
22237
427 …Run Code Online (Sandbox Code Playgroud) 我知道使用busy-wait不是一个好的编程习惯,最好尽可能使用同步对象(wait-notify).但是我想知道一个人是否准备好牺牲cpu周期,然后忙着等待更快或等待通知?
我假设wait-notify将涉及对同步对象的内部锁定,并且信号可能来自内核以唤醒线程,使得这种方法比忙碌等待慢得多,其中人们可以直接检查条件直到它是满意.只要满足此条件(例如,布尔值== true),线程就可以从繁忙的等待中退出.根据我的理解,我感到很忙 - 等待应该更快.
如果我的论点是错误的,如果其他人能分享他们的想法并纠正我,我将不胜感激.
背景:
我有一个TextView和两个(自定义)按钮在右边TextView.2个按钮和TextView单个包含在内RelativeLayout.现在,在任何时间点,都可以看到 button-1或button-2 .因为我不知道哪个按钮可见,所以我在两个按钮的代码中添加了
android:layout_toRightOf="@+id/MyTextView"
Run Code Online (Sandbox Code Playgroud)
XML文件中的属性.哪个工作正常.这会根据按钮的位置(和宽度)放置按钮TextView.
问题:
语言更改后,我必须根据Button右侧的宽度更改TextView的宽度.我尝试minWidth/maxWidth了按钮和TextView它们,但它们仍然不允许TextView根据按钮的宽度动态调整大小.
无论如何,我可以指定:
android:layout_toLeftOf="@+id/button1 | @+id/button2"
Run Code Online (Sandbox Code Playgroud)
即,TextView按钮-1或按钮-2的左侧.那么文本视图将根据右边的按钮对齐?
注意:
我更喜欢需要更改XML布局文件(静态)的解决方案,而不是在java(活动)文件中添加代码.
我正在测试一个CPU使用率检查程序,我得到一个空指针异常,所以我添加了null check.当我添加null检查时,我开始收到一系列错误.这是代码:
double ideltime=Double.parseDouble(cpuIdle.trim());
**String idelTimeStr=formatter.format(ideltime);
if(idelTimeStr!=null)**
double usuage=temp - Double.parseDouble(idelTimeStr);
cpuUsage = formatter.format(usuage);
Run Code Online (Sandbox Code Playgroud)
突出显示的行显示添加了空检查.此null检查后的编译错误如下:
CPUUsage.java:29: error: '.class' expected
double usuage=temp - Double.parseDouble(idelTimeStr);
^
CPUUsage.java:29: error: not a statement
double usuage=temp - Double.parseDouble(idelTimeStr);
^
CPUUsage.java:29: error: illegal start of expression
double usuage=temp - Double.parseDouble(idelTimeStr);
^
CPUUsage.java:29: error: ';' expected
double usuage=temp - Double.parseDouble(idelTimeStr);
Run Code Online (Sandbox Code Playgroud)
请帮忙解决这个问题.
char[] arrNew = new char[0];
System.out.println(arrNew.length); // length = 0
arrNew[0]='c'; // ArrayIndexOutOfBoundsException .
Run Code Online (Sandbox Code Playgroud)
在上面的代码中你可以清楚地看到,有一个大小为0的数组是没有意义的.据我所知,没有0大小数组的实际用法.有人可以解释为什么编译器允许创建0长度数组.还有一个0长度数组与初始化为null的数组有何不同?(即,分配给它的内存就好像它是一个普通的数组?).如果这个问题看起来很愚蠢,我很抱歉.
以下是我的代码.
public class Test {
public static void main(String[] args) throws InterruptedException {
PrintingThread a = new PrintingThread("A");
a.setPriority(9);
PrintingThread b = new PrintingThread("B");
b.setPriority(1);
a.start();
b.start();
}
static class PrintingThread extends Thread {
private int i = 0;
private String name;
public PrintingThread(String name) {
super();
this.name = name;
}
@Override
public void run() {
while (true) {
i++;
if (i % 100000 == 0) {
System.out.println("Thread " + name + " count=" + i
+ ". Time :" …Run Code Online (Sandbox Code Playgroud) java 字符串文字可以像"abc"垃圾一样收集吗?如果是,我们如何以编程方式证明他们是GCed?
基本上我有一个电子邮件框,它只应该包含电子邮件框中允许的字符,但可以为空,问题是当框为空时,它会弹出我创建的错误说
邮箱包含不允许的字符
String UcharSet = "[a-zA-Z0-9-~!_#(@).]+";
boolean UMORN = UserName.matches(UcharSet);
if(!UMORN)
PopMyError();
Run Code Online (Sandbox Code Playgroud)
只要我知道我的允许列表中没有空字符,那么您能告诉我如何允许该框也可以为空吗?
并告诉我是否获得了电子邮件中允许的所有字符。