小编Mal*_*jam的帖子

为什么(a*b!= 0)比Java中的(a!= 0 && b!= 0)更快?

我正在用Java编写一些代码,在某些时候,程序的流程是由两个int变量"a"和"b"是否为非零来确定的(注意:a和b从不是负数,并且从不在整数溢出范围内).

我可以评估它

if (a != 0 && b != 0) { /* Some code */ }
Run Code Online (Sandbox Code Playgroud)

或者

if (a*b != 0) { /* Some code */ }
Run Code Online (Sandbox Code Playgroud)

因为我希望每段代码运行数百万次,所以我想知道哪一段会更快.我通过在一个巨大的随机生成的数组上进行比较来做实验,我也很想知道数组的稀疏性(数据的分数= 0)会如何影响结果:

long time;
final int len = 50000000;
int arbitrary = 0;
int[][] nums = new int[2][len];

for (double fraction = 0 ; fraction <= 0.9 ; fraction += 0.0078125) {
    for(int i = 0 ; i < 2 ; i++) {
        for(int j = 0 ; j < len ; j++) …
Run Code Online (Sandbox Code Playgroud)

java performance processing-efficiency microbenchmark branch-prediction

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

小记录器类

我正在寻找一个c ++的小型轻量级日志系统.我找到了一些现有的框架,但此时我并不需要它们的所有功能.我主要是在寻找一个可以配置日志级输出文​​件的小型系统.我正在寻找现有的解决方案,因为我不想重新发明轮子.

c++ logging

28
推荐指数
4
解决办法
6万
查看次数

为什么Arrays.asList返回固定大小的List?

Arrays.asList是一个有用且方便的方法,但它返回一个List大小固定的方法,这样就不会添加或删除任何元素addremove(UnsupportedOperationException抛出).

这有充分的理由吗?这看起来像是一个奇怪的限制.

文件没有解释背后的原因:

返回由指定数组支持的固定大小的列表.

java list

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

在次线性时间搜索2D数组

这是最近的编码访谈中的问题

编写一个有效的算法来搜索mxn矩阵中的值.

该矩阵具有以下属性:

  1. 每行中的整数按从左到右的升序排序.

  2. 每列中的整数按从上到下的顺序排序.
    .

      [1,   4,  7, 11, 15]
    
      [2,   5,  8, 12, 19]
    
      [3,   6,  9, 16, 22]
    
      [10, 13, 14, 17, 24]
    
      [18, 21, 23, 26, 30]
    
    Run Code Online (Sandbox Code Playgroud)

有没有办法在O(mn)以下执行此操作.我无法看到如何在这个数组上进行二进制搜索,因为没有办法消除任何东西.

java arrays algorithm

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

我们可以在构造函数中初始化静态变量吗?

我有以下代码片段:

class Constructor {

  static String str;

  public void Constructor() {
      System.out.println("In constructor");
      str = "Hello World";
  }

  public static void main(String[] args) {
      Constructor c=new Constructor();
      System.out.println(str);
  }
}
Run Code Online (Sandbox Code Playgroud)

即使字符串在构造函数内初始化,其输出也为null.

为什么会这样?

java

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

Java 中字节移位的奇怪行为

当我在 上使用位移位时byte,我注意到使用无符号右移 ( >>>)时得到了奇怪的结果。使用int,右移(signed:>>和 unsigned: >>>)都按预期运行:

    int min1 = Integer.MIN_VALUE>>31; //min1 = -1
    int min2 = Integer.MIN_VALUE>>>31; //min2 = 1
Run Code Online (Sandbox Code Playgroud)

但是当我对 做同样的byte事情时,无符号右移会发生奇怪的事情:

    byte b1 = Byte.MIN_VALUE; //b1 = -128
    b1 >>= 7; //b1 = -1

    byte b2 = Byte.MIN_VALUE; //b2 = -128
    b2 >>>= 7; //b2 = -1; NOT 1!
    b2 >>>= 8; //b2 = -1; NOT 0!
Run Code Online (Sandbox Code Playgroud)

我认为可能是编译器在内部将 转换byteint,但似乎不足以解释这种行为。

为什么在 Java 中对字节进行位移位的行为是这样的?

java byte binary-operators bit-shift bitwise-operators

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

使用 Cartopy 从数据中屏蔽海洋或陆地

我想从全球海面温度数据中掩盖陆地区域。我正在使用 Cartopy 绘制数据。

import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
from netCDF4 import Dataset

f = Dataset('sst.mnmean.nc')
sst = f.variables['sst'][0,:,:]
lats = f.variables['lat'][:]
lons = f.variables['lon'][:]

ax = plt.axes(projection=ccrs.PlateCarree())
ax.coastlines()
plot = ax.contourf(lons, lats, sst, 60, transform=ccrs.PlateCarree())
cb = plt.colorbar(plot)
plt.show()
Run Code Online (Sandbox Code Playgroud)

上面的代码绘制了这样的数据:
在此处输入图片说明

我想从这里掩盖土地。

python matplotlib cartopy

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

Integer.MIN_VALUE 的二进制表示形式

Integer.MIN_VALUEJava 中的二进制表示为10000000000000000000000000000000.

10000000000000000000000000000001既然补码加一会大于10000000000000000000000000000000一,为什么不呢?

java binary

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

为什么1/2使用双倍== 0?

我是一名高中生,目前正准备参加州学术会议(UIL).我有一个问题,我到处寻找,似乎无法找到答案!为什么打印出0.0?

double d = 1/2;
System.out.println(d);
Run Code Online (Sandbox Code Playgroud)

java double

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

为什么此代码会产生IndexOutOfBoundsException?

有人可以解释这个问题......

为什么:

String letters[] = { "A", "B", "C" };
ArrayList<String> list = new ArrayList<String>(3);

for(int i=2 ; i >= 0 ; i--)
    list.set(i,letters[i]);


for(int i=0 ; i < list.size() ; i++)
    System.out.print(list.get(i));
Run Code Online (Sandbox Code Playgroud)

制作: IndexOutOfBoundsException

java string for-loop arraylist indexoutofboundsexception

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

令人困惑的退货声明

我无法准确理解IF语句正在做什么,从我可以看到它检查变量x是否等于int 0.如果这是返回true变量的ABSOLUTE值y...这是当我丢失情节时,为什么return语句会继续包含<= ESPILON?当然这意味着小于或等于epsilon的价值?如果是这样的话怎么样?如果它不意味着那么它是什么意思?

(JAVA代码)

final double EPSILON = 1E-14;
if (x == 0)
    return Math.abs(y) <= EPSILON;
Run Code Online (Sandbox Code Playgroud)

java floating-point operator-precedence

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

Java,在do-while循环结束时不注册用户输入

我有这个代码:

import java.util.*;

public class MyAccount {
    public static double balance = 0.0;

    public static double deposit(double deposit){
        return balance += deposit;
    }
    //public void setBalance(double balance){
    //  this.balance = balance;
    //}
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String redo = "";
        do{
        System.out.println("What do you want to do today?");
        String answer= in.nextLine();
        if(answer.equals("deposit")){
            System.out.println("How much do you want to deposit?");
            double money = in.nextDouble();
            deposit(money);
        }
        System.out.println("Your balance is " + balance);
        System.out.println("Anything else(Y …
Run Code Online (Sandbox Code Playgroud)

java input while-loop

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

如果且仅当前后char不是'dot'时,如何在'点'上拆分字符串

给出以下字符串:

"foo.bar.baz"
Run Code Online (Sandbox Code Playgroud)

它可以使用Java String split轻松地在'dot'上拆分:

split("foo.bar.baz", "\.")
Run Code Online (Sandbox Code Playgroud)

但是,如果我想保留点,如果它后面紧跟另一个点,那么正则表达式是什么:

"foo.bar.baz..raz..daz.faz" ? "foo" "bar" "baz..raz..daz" "faz"
Run Code Online (Sandbox Code Playgroud)

java regex

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