我的问题类似于" Ruby中包含和扩展之间有什么区别? ".
Ruby require和includeRuby 之间的区别是什么?如果我只想使用我班级模块中的方法,我应该是require它还是include它?
我开始用Java编程,我想知道是否#define存在与C++相当的东西.
谷歌的快速搜索说它没有,但任何人都可以告诉我,如果Java中存在类似的东西吗?我正在努力让我的代码更具可读性.
而不是myArray[0]我想能够写myArray[PROTEINS]例如.
考虑以下课程
public final class Constant {
public static final String USER_NAME="user1";
//more constant here
}
Run Code Online (Sandbox Code Playgroud)
这个类在包B中.
现在我将在包A中使用它.考虑以下两种可以使用的方法.
方法1-使用 import B.Constant
import B.Constant;
public class ValidateUser {
public static void main(String[] args) {
if(Constant.USER_NAME.equals("user1")){
}
}
}
Run Code Online (Sandbox Code Playgroud)
方法2-使用 import static B.Constant.USER_NAME;
import static B.Constant.USER_NAME;
public class ValidateUser {
public static void main(String[] args) {
if(USER_NAME.equals("user1")){
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,在这种情况下,静态导入是否有任何差异或优势?
任何人都可以清楚地向我解释当我们在Java文件中使用import语句时到底发生了什么?如果我们添加越来越多的java类,它会增加文件的大小吗?为什么我们不使用类加载器呢?导入的限制是什么?
普通导入语句和静态导入语句之间有什么真正的(即实际的)区别?
import static java.lang.System.*;
class StaticImportExample{
public static void main(String args[]){
out.println("Hello");
out.println("Java");
}
}
import java.lang.System.*;
class StaticImportExample{
public static void main(String args[]){
System.out.println("Hello");
System.out.println("Java");
}
}
Run Code Online (Sandbox Code Playgroud) 编辑:IntelliJ CE
我想要的:能够写作
setCanvas(500,500);
Run Code Online (Sandbox Code Playgroud)
代替
StdDraw.setcanvas(500,500);
Run Code Online (Sandbox Code Playgroud)
问题:我不知道如何正确导入 Stddraw 库。如果我只是这样做
import StdDraw;
Run Code Online (Sandbox Code Playgroud)
IntelliJ 告诉我“StdDraw”符号无法解析。如果我将其注释掉,我可以从 StdDraw 调用方法,但我必须编写 StdDraw.setcanvas(500,500);
StdDraw.java 与 Solver.java 位于同一目录中。
代码:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
// import StdDraw;//StdDraw is in the same directory as Solver
public class Solver {
public static void main(String[] args) {
System.out.println("Solver main is running.");
StdDraw.setCanvasSize(500, 500);
StdDraw.setPenColor(StdDraw.RED);
StdDraw.filledRectangle(0,0,10,10);
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试过: - 确保 Stddraw.java 与我正在编译和运行的文件位于同一目录中 - 查看http://introcs.cs.princeton.edu/java/stdlib/javadoc/StdDraw.html - 搜索完整的代码示例,即。显示如何导入库的代码 - 搜索 YouTube 教程 - 阅读https://www.jetbrains.com/idea/help/library.html - 在 StdDraw 前面添加一些东西,例如。stblib.StdDraw
我有这个简单的java代码:
import java.nio.file.*;
import java.io.*;
public class Write {
public static final String PATH = "/home/user/Desktop/hello.txt";
public static void main(String[] argv) {
Path path = Paths.get(PATH);
OutputStream out;
try {
out = Files.newOutputStream(path, CREATE, APPEND);
} catch (IOException e) {
System.out.println("Caught IOException: "+e.getMessage());
}
}
}
Run Code Online (Sandbox Code Playgroud)
由于此错误而无法编译:
Write.java:14: error: cannot find symbol
out = Files.newOutputStream(path, CREATE, APPEND);
^
symbol: variable CREATE
location: class Write
Write.java:14: error: cannot find symbol
out = Files.newOutputStream(path, CREATE, APPEND);
^
symbol: variable APPEND
location: class …Run Code Online (Sandbox Code Playgroud) import static java.util.stream.Collectors.*;
import java.util.*;
import java.lang.*;
//import java.util.Collections;
public class HelloWorld{
public static void main(String []args){
System.out.println("Hello World");
List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
List<String> filtered = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
}
}
Run Code Online (Sandbox Code Playgroud)
输出
/tmp/java_tdo3eB/HelloWorld.java:10: error: cannot find symbol
List<String> filtered = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
^
symbol: variable Collectors
location: class HelloWorld
1 error
Run Code Online (Sandbox Code Playgroud)
所以我问的是为什么我不能使用收集器,因为我也导入了那个类
java ×8
import ×3
include ×1
java-stream ×1
preprocessor ×1
require ×1
ruby ×1
static ×1
stddraw ×1