检查对象是否为空的更短方法?

时间:2018-11-08 21:05:59

标签: java

有没有一种较短的方法来检查字符串/对象是否为空?

    String str = someMethodThatReturnsStringOrNull(someOthreObject);
    if(str == null) { System.out.println("Empty"); }

例如JS样式:

    if(str) { System.out.println("Empty"); }

1 个答案:

答案 0 :(得分:10)

否。

Java要求条件语句的表达式必须为#include<stdio.h> #include<stdlib.h> char* encrypt(char* input, char* key) { int keyLength = 0; int inputLength = 0; int i; int j; for(i = 0; key[i] != '\0'; i++) //Get the length of the key { keyLength++; } for(i = 0; input[i] != '\0'; i++) //Get the length of the input { inputLength++; } for (i = 0; i < keyLength; i++) { if(key[i] >= 'a' && key[i] <= 'z') { key[i] = key[i] - 'a' + 'A'; } } char* encryptedMessage = (char *)malloc((inputLength+1)*sizeof(char)); //Malloc for the encrypted message char fixedKey[inputLength + 1]; if(inputLength < keyLength) { for(i =0; i < inputLength; i++) { fixedKey[i] = key[i]; } } for(i = 0, j = 0; i < inputLength; ++i, ++j) //If the key length is shorter than message length, loop the key to correct length { printf("Entered Loop\n"); if(j == keyLength) j = 0; fixedKey[i] = key[j]; } fixedKey[i] = '\0'; for(i = 0; i < inputLength; ++i) //Encryption { if(input[i] == ' ') { encryptedMessage[i] = ' '; continue; } encryptedMessage[i] = ((input[i] + fixedKey[i]) % 26) + 'A'; } encryptedMessage[i] = '\0'; return encryptedMessage; } char* decrypt(char* input, char* key) { int keyLength = 0; int inputLength = 0; int i; int j; for(i = 0; key[i] != '\0'; i++) //Get the length of the key { keyLength++; } for(i = 0; input[i] != '\0'; i++) //Get the length of the input { inputLength++; } for (i = 0; i <keyLength; i++) { if(key[i] >= 'a' && key[i] <= 'z') { key[i] = key[i] - 'a' + 'A'; } } char* decryptedMessage = (char *)malloc((inputLength+1)*sizeof(char)); char fixedKey[inputLength + 1]; if(inputLength < keyLength) { for(i =0; i < inputLength; i++) { fixedKey[i] = key[i]; } } for(i = 0, j = 0; i < inputLength; ++i, ++j) //Fix the key length if needed { if(j == keyLength) j = 0; fixedKey[i] = key[j]; } fixedKey[i] = '\0'; for(i = 0; i < inputLength; ++i) //Decryption { if(input[i] == ' ') { decryptedMessage[i] = ' '; continue; } decryptedMessage[i] = (((input[i] - fixedKey[i]) + 26) % 26) + 'A'; } decryptedMessage[i] = '\0'; return decryptedMessage; } int main() { char* encrypted = encrypt("The quick brown fox jumps over lazy dogs","key"); char* decrypted = decrypt(encrypted,"key"); printf("Encrypted string is: %s\nDecrypted String is: %s\n",encrypted,decrypted); return 0; } 类型,或者可以自动转换为boolean的类型;只能通过拆箱转换为boolean的唯一类型。

除非定义的名称短而无用的方法,否则不能使用更少的字符来完成此操作:

Boolean

但是这5个额外的字符节省了大量的认知负担,不知道“ if (n(str)) { // "n()" requires 3 characters if (str == null) { // " == null" requires 8 characters // (remove the whitespace if you want to do it in 6...) 到底是什么?!”,更不用说定义和/或导入该方法的其他字符了。另一方面,任何编写过Java(或可能是其他语言)的人都可以立即理解n

== null精确地传达了您要测试的内容:该引用为空(而不是空),或者可以转换为值为零的数字,或其他。

str == null还具有有益的编译时属性,例如它将阻止您使用原始操作数,例如== null是编译时错误,因为int i = 0; if (i == null) {}是原始的因此不能为i,而可以使用null(假设形式参数类型为if (n(i)) {},为了最大程度地重用,您希望它是Object),因为}}将被装箱。

Java是一种相当冗长的语言;还有很多事情比这更冗长。就我个人而言,我什至不会注意到写i,这就是我的肌肉记忆的条件。

别担心,要学会喜欢语法。