小编kev*_*mes的帖子

给定字符串分配不同内存的原因是什么?

第一项声明如下

char*str="hello";
Run Code Online (Sandbox Code Playgroud)

在这种情况下,字符串文字存储在只读存储器中.

第二项声明如下

char str[10]="name";
Run Code Online (Sandbox Code Playgroud)

在这种情况下,字符串文字存储在可写存储器中.

为什么分配的内存与两个字符串文字有区别?

c memory string pointers char

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

错误:无效操作数到二进制==(有'struct demo'和'struct demo')

代码1:

struct demo
{
    int a;
}d[2];

int main()
{
    d[0].a=5;
    d[1]=d[0];
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常

代码2:

struct demo
{
    int a;
}d[2];

int main()
{ 
    d[0].a=5;
    d[1]=d[0];
    if(d[0]==d[1])
    {
        printf("hello");
    }
return 0;
}
Run Code Online (Sandbox Code Playgroud)

此代码给出错误

error: invalid operands to binary == (have 'struct demo' and 'struct demo')
Run Code Online (Sandbox Code Playgroud)

为什么在Code 2中出现此错误?

c arrays struct compiler-errors equality

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

如何从给定的一组值生成随机数?

int main()
{
    srand(time(NULL));
    int r=rand();
}
Run Code Online (Sandbox Code Playgroud)

上面的函数可以生成任何数字,但如果我想从给定的一组值生成一个数字,该怎么办呢?
例如,如果我想从值中随机生成一个数字4,6,1,7,8,3.
有没有办法实现这个目标?

任何帮助,将不胜感激.

c random srand

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

synchronized块没有锁定对象引用

class Demo
{
    void demo()
    {
        System.out.println("Inside demo of "+Thread.currentThread().getName());
        try
        {
            Thread.sleep(1000000);
        }
        catch(InterruptedException exc)
        {
            System.out.println(Thread.currentThread().getName()+" interrupted");
        }
    }
}

class MyThread1 implements Runnable
{
    Thread thread;
    Demo d;

    MyThread1(String name, Demo ob)
    {
        d = ob;
        thread = new Thread(this, name);
        thread.start();
    }

    @Override
    public void run()
    {
        System.out.println(thread.getName()+" starting");

        synchronized(d)
        {
            d.demo();
        }

        System.out.println(thread.getName()+" ending");
    }
}

class MyThread2 implements Runnable
{
    Thread thread;
    Demo d;

    MyThread2(String name, Demo ob)
    {
        d = ob;
        thread = …
Run Code Online (Sandbox Code Playgroud)

java multithreading synchronized

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

为什么lambda表达式无法解除引用?

import java.util.*;

class TreeMapDemo
{
    public static void main(String args[])
    {
        Comparator <String> c1 = (str1, str2) -> 0;

        Comparator <String> c2 = (str1, str2) -> 1;

        TreeMap <String, Double> tm1 = new TreeMap(c1.thenComparing(c2));
        //Working fine

        TreeMap <String, Double> tm2 = new TreeMap(((str1, str2) -> 0).thenComparing((str1, str2) -> 1));
        //Error: Lambda expression not expected here
        //<none> can not be dereferenced
    }
}
Run Code Online (Sandbox Code Playgroud)

我的查询是:

如果

c1 = (str1, str2) -> 0而且c2 = (str1, str2) -> 1,

那么为什么

c1.thenComparing(c2) …

java lambda dereference dot-operator java-8

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

以下声明中的差异

我无法识别以下Java中的字符串声明的区别.

假设我有两个字符串

String str1="one";
String str2="two";
Run Code Online (Sandbox Code Playgroud)

有什么区别

String str3=new String(str1+str2);
Run Code Online (Sandbox Code Playgroud)

String str3=str1+str2;
Run Code Online (Sandbox Code Playgroud)

在上述两个声明中,内容都str3将是onetwo.

假设我创建了一个新字符串

String str4="onetwo";
Run Code Online (Sandbox Code Playgroud)

然后,在上述声明中,

if(str4==str3) {
    System.out.println("This is not executed");
}
Run Code Online (Sandbox Code Playgroud)

为什么str3str4不是指同一个对象?

java string declaration string-concatenation

0
推荐指数
1
解决办法
57
查看次数