小编Und*_*Dog的帖子

int vs Integer比较Java

class datatype1
{

    public static void main(String args[])
    {
    int i1 = 1;
    Integer i2 = 1;
    Integer i3 = new Integer(1);

    System.out.println("i1 == i2"+(i1==i2));
    System.out.println("i1 == i3"+(i1==i3));
    System.out.println("i2 == i3"+(i2==i3));
}

}
Run Code Online (Sandbox Code Playgroud)

产量

i1 == i2true
i1 == i3true
i2 == i3false
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么我在比较i2和i3时会出错吗?

java

31
推荐指数
2
解决办法
5万
查看次数

StringBuilder .equals Java

class strb
{

    static public void main(String...string)
    {
         StringBuilder s1 = new StringBuilder("Test");
         StringBuilder s2 = new StringBuilder("Test");

         System.out.println(s1);
         System.out.println(s2);
         System.out.println(s1==s2);
         System.out.println(s1.equals(s2)); //Line 1
         System.out.println(s1.toString()==s2.toString()); //Line 2
         if(s1.toString()==s2.toString())System.out.println("True"); //Line 3
    }

}
Run Code Online (Sandbox Code Playgroud)

输出是

Test
Test
false
false
Run Code Online (Sandbox Code Playgroud)

只需对.equals快速提问.

无论对象内容如何,.equals只有当两个对象引用指向同一个对象时才返回true?


编辑:现在我理解有关的部分,.equals但为什么第2行和第3行也没有返回true

编辑:我相信==看看引用变量的地址,所以s1和s2不能相等.如果我的假设不对,请更正我

java

21
推荐指数
1
解决办法
3万
查看次数

Java如何知道在打破循环时跳转到哪里?

while (condition) {

    if (condition) {
        statement1;
        statement2;

        break;
    } else {
        statement3;
        statement4;
    }

}
Run Code Online (Sandbox Code Playgroud)

通过break在if子句中使用,我们确保循环停止并退出.

我不明白break语句如何"知道"它是否在一个循环中,它首先退出,或者它如何"知道"跳转到哪里.这是怎么发生的?

java loops compilation

18
推荐指数
3
解决办法
1387
查看次数

Java中的instanceof - 为什么不编译?

class A {

    public static void main(String...args) {
        Integer var = 10; 

        if(var instanceof Character)  // Line1
            System.out.println("var is a Character");
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道第1行不会编译,因为编译器发现它var不是Character.

我不明白的是为什么编译器会引发错误,而不是返回的falsetrue.

如果编译器返回falsetrue(instanceof即将操作视为常规的基于if的验证),那么它会更有用..它不会吗?

还是我错过了一些明显的东西?

java instanceof

18
推荐指数
1
解决办法
2387
查看次数

重写的方法不能抛出异常Java

这是我的代码块.

class Alpha{
    public void Gamma() {
        System.out.println("Alphas");
    }
}

class Beta extends Alpha{
    public void Gamma() throws Exception //Line 1
    {
        try {
            System.out.println("Betas");
        } catch(Exception e) {
            System.out.println("Exception caught");
        } finally {
            System.out.println("xfg");
        }
    }
    public static void main(String[] args) throws Exception {
        Alpha g = new Beta();
        g.Gamma();
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码无法编译,因为我在Line1中添加了"throws".

编译器抱怨重写的方法不能抛出异常.

为什么这样 ?.

为什么重写的方法不能抛出异常?

因为我可以通过在子类的实现中添加n行代码来覆盖基类中的方法.

这些添加的代码可以抛出异常,为什么我不能在重写方法中使用"throws"?

java

14
推荐指数
2
解决办法
3万
查看次数

什么是Java中的便捷方法?

我被告知Activity.findViewById(int)方法是一个方便的方法,在幕后调用View.findViewById(int).

我无法找到任何文档来解释Java的便捷方法(我只能看到iOS).

PS:我在粗略的谷歌搜索期间或通过SO prev post找不到任何答案.如果已经有一个指出,那么我将关闭这个.

java android

12
推荐指数
1
解决办法
5494
查看次数

Java中无法访问的语句编译错误

class For1
{
  public static void main(String args[])
  {
    int a = 0;
    for(;;)
    {
      break;
      System.out.println(a); //Line 1
      ++a;//Line 2
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我知道第1行/第2行永远不会执行.但我仍然不明白为什么抛出编译时错误.我收到"无法访问的语句"编译错误.

这是否意味着编译器检查它是否能够编译所有分支/代码行?

java unreachable-code

8
推荐指数
2
解决办法
6万
查看次数

IOException与RuntimeException Java

class Y {
    public static void main(String[] args) throws RuntimeException{//Line 1
        try {
            doSomething();
        }
        catch (RuntimeException e) {
            System.out.println(e);
        }
    }
    static void doSomething() throws RuntimeException{ //Line 2
        if (Math.random() > 0.5) throw new RuntimeException(); //Line 3
        throw new IOException();//Line 4
    }
}
Run Code Online (Sandbox Code Playgroud)

当我抛出两种类型的异常(Line4中的IOException和Line3中的RunTimeException)时,我发现我的程序在我在第1行和第2行的throws子句中指示"IOException"之前不会编译.

而如果我反向"抛出"以指示抛出IOException,则程序会成功编译,如下所示.

class Y {
    public static void main(String[] args) throws IOException {//Line1
        try {
            doSomething();
        }
        catch (RuntimeException e) {
            System.out.println(e);
        }
    }
    static void doSomething() throws IOException {//Line 2
        if (Math.random() > 0.5) throw …
Run Code Online (Sandbox Code Playgroud)

java exception-handling exception

6
推荐指数
1
解决办法
2万
查看次数

将NULL值显式设置为数组元素

有人能告诉我为什么我会因为明确地将NULL值设置为数组元素而遇到编译错误?

class array_1
{

public static void main(String args[])
{

int[] a = new int[5];

a[0]=1;
a[2]='a';
a[3]=null; //Compiler complains here


for(int i : a) System.out.println(i);

}

}
Run Code Online (Sandbox Code Playgroud)

我假设因为它的int数组和允许的文字值是0而不是NULL.我对吗 ?

java

5
推荐指数
2
解决办法
3万
查看次数

React Native:处理对sqllite db的异步调用

我在尝试了解async函数在React Native中的工作方式时有些挣扎。

在此示例中,我通过异步调用来调用sqllite db调用,并获取和的值,height并将standard这两个值作为称为的对象返回result

如下面的控制台输出所示,值在sqllite db中存在。

componentDidMount生命周期方法调用的方法是异步方法。

可以看出,我正在await等待实际执行(也就是从sqllite获取数据)完成。

X行始终返回未定义状态。

Y线似乎根本不执行,因为状态根本没有从初始值100和“ asasd”更改。

我已经仔细检查了代码,但不确定在这里缺少什么。

有人可以看看并让我知道吗?

App.js

import React, { Component } from 'react';
import { View, Text } from 'react-native';
import {
  dropLogsTable,
  createLogsTable,
  getProfileHeightStandardfromDB,
  getProfileHeightStandardPremade,
  saveLogsRecord
} from '../src/helper';

export default class App extends Component {
  state = {
    logarray: [],
    profileobject: {profileheight: 100, profilestandard: "asasd"},

  };


  componentDidMount() {

    dropLogsTable();
    createLogsTable();
    this.fetchProfileData();


  }

  async fetchProfileData() {
    console.log('Before …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous reactjs react-native expo

5
推荐指数
1
解决办法
2048
查看次数