小编Sam*_*Sam的帖子

Java赋值运算符执行

在Java中,我理解赋值求值为右操作数的值,所以像x == (y = x)evaluate 这样的语句true.

但是,此代码输出false.

public static void main(String[]args){
    String x = "hello";
    String y = "goodbye";
    System.out.println(x.equals(x = y));
}
Run Code Online (Sandbox Code Playgroud)

为什么是这样?在我的理解中,它首先评估(x = y),分配xy,然后返回值y.然后x.equals(y)是评估,这应该是true因为xy现在应该共享相同的引用,而是,我得到false.

显示源的屏幕截图以及输出为

这里发生了什么?

java string equals assignment-operator

74
推荐指数
4
解决办法
3423
查看次数

typedef函数指针递归

我试图声明一个函数,它接受与参数相同类型的函数.

void rec(void(*f)(void(*)(void(*)(...))))
{
    f(f);
}
Run Code Online (Sandbox Code Playgroud)

我最终做了递归尝试.

你总是可以从一个演员void*.

void rec(void* f)
{
    ((void(*)())f)(f);
}
Run Code Online (Sandbox Code Playgroud)

但它不是类型安全的

我尝试用以下方法做到这一点typedef:

typedef void(*RecFunc)(RecFunc);
Run Code Online (Sandbox Code Playgroud)

但是没有编译.

有可能吗?

c c++

4
推荐指数
2
解决办法
123
查看次数

我的Java代码出了什么问题?(初学者)

import java.util.HashMap;

public class Library {

    Library() {
    }

    public void getFinishedBooks(HashMap<String, Boolean> library) {
        if(library.size() < 1)
            System.out.println("Error! Library is empty.");
        else {
            for(String book : library.keySet()); {
                if((library.get(book)) == true)
                    System.out.println(library.get(book));
            }
        }
    }

    public static void main(String[] args) {

        HashMap<String, Boolean> myBooks = new HashMap<String, Boolean>();
        myBooks.put("Road Down the Funnel", true);
        myBooks.put("Rat: A Biology", false);
        myBooks.put("TimeIn", true);
        myBooks.put("3D Food Printing", false);

        Library myLibrary = new Library();
        myLibrary.getFinishedBooks(myBooks);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是一个基本的图书馆计划.我似乎无法找到导致错误的原因......

错误消息:"错误!找不到符号if((library.get(book))== true)

符号:可变书

位置:类库

java

-2
推荐指数
1
解决办法
341
查看次数

标签 统计

java ×2

assignment-operator ×1

c ×1

c++ ×1

equals ×1

string ×1