具体来说,在这个例子上:
1. 程序启动以来,第一次访问了该类的一个静态成员(int类型)。
2.这个类已经被初始化(静态块的执行等)。
3.我们转向同一个类的静态方法。正是此时,Java 是从哪里获得方法(命令)的主体:从硬盘上的 .class 文件还是从 RAM 中?
也就是说,当一个类在没有创建对象的情况下被初始化时,是来自类的所有信息还是只有部分信息从 .class 文件到另一个区域(比如 RAM)?如果只是一部分,他们会得到:方法体吗?之后=有什么实例字段?
具体来说,在这个例子上:
1. 程序启动以来,第一次访问了该类的一个静态成员(int类型)。
2.这个类已经被初始化(静态块的执行等)。
3.我们转向同一个类的静态方法。正是此时,Java 是从哪里获得方法(命令)的主体:从硬盘上的 .class 文件还是从 RAM 中?
也就是说,当一个类在没有创建对象的情况下被初始化时,是来自类的所有信息还是只有部分信息从 .class 文件到另一个区域(比如 RAM)?如果只是一部分,他们会得到:方法体吗?之后=有什么实例字段?
为什么此代码中的输出为 1?似乎括号没有给出最大优先级,并且它们中的操作被单独考虑,但并不总是放在第一位......
class Solution2 {
public static void main(String[] args) {
int x = 3;
int y = 5;
System.out.println(y % x * (++x + 0) / 8);
//Вывод: 1 (а не 0 – если бы в первую очередь сработал инкремент, который в скобках...)
}
}
以下创建对象的方法有什么区别/后果/特征?(全部运行没有错误):
public class Solution<T> {
public static void main(String[] args) {
Solution object1 = new Solution(); //1
Solution<Integer> object2 = new Solution(); //2
Solution object3 = new Solution<Integer>(); //3
}
}
是否可以在不创建其他对象(仅极端子类的一个对象)的情况下访问不是超类的对象,而是超类的超类的对象的字段?
//Суперкласс (отдельный java файл):
public class Solution {
int age = 1;
}
//Подкласс (отдельный java файл):
public class Cat extends Solution {
int age = 2;
}
//Подкласс у подкласса (отдельный java файл):
public class Cat2 extends Cat {
int age = 3;
public static void main(String[] args) {
Cat2 cat = new Cat2();
cat.m1();
}
public void m1() {
System.out.println(super.super.age); //Что писать здесь, что бы вывелось 1?
}
}
它?
String[] seasons = new String[] {"Winter", "Spring", "Summer", "Autumn"};
或者那个?
String[] seasons = {"Winter", "Spring", "Summer", "Autumn"};
或两者?
如何使用 ArrayList.remove() 方法删除整数数组中的特定数字?
如果您在方法参数中传递一个不带引号的数字 - 这将意味着一个索引,用引号引起来 - 它不起作用......
import java.util.ArrayList;
public class Circle {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(2);
list.add(1);
list.add(3);
list.remove("2"); //что писать в скобках?
System.out.println(list);
}
}
也就是说,他们使用与 &&、|| 相同的技术进行比较,只有细微的变化(左右都检查)?
5>1 & 6>3; //真的
long n = 922337203685477580;
错误:整数太大。但是,如果我指定 long 类型,整数与它有什么关系?
如何从class1引用class2的实例变量?
例如,从这里我们转向:
public class Main {
public static void main(String[] args) {
System.out.println(object1.a); //ошибка
}
}
}
并且声明 object1 变量的类在同一个包中:
public class Solution {
int a = 555;
public static void main(String[] args) {
Solution object1 = new Solution();
}
}
最好的方法是导入整个包(方便):
import java.io.*;
或者只导入代码工作所必需的那些类?
import java.io.BufferedReader;
import java.io.InputStreamReader;
为什么操作完成后后缀增量不起作用?
理论上,毕竟应该是:先操作(带自增的操作数所在的位置),再执行后缀自增。而在示例中,增量根本不起作用,无论是之前还是之后,都没有任何痕迹:
int i = 5;
i = i++; //Я ожидал, что будет: 5 присваивается в i, только потом выполняется 5+1 в i (в это же переменную, здесь же не j например стоит...).
System.out.println(i); //Вывод: 5... Почему не 6? Инкремент что-то сделал?