class C {
public static void main(String[] args){
B test = new B(1);
}
}
abstract class A {
int i = 1;
abstract void test();
public A(){
System.out.println("before test()");
test();
System.out.println("after test");
}
}
clas
我正在学习Java中的静态初始化器。我完成了一个源代码,如下所示:
public class A {
private static int count = 5;
final static int STEP = 10;
boolean alive;
static {
count = 1;
}
public static void main(String[] args) {
A a = new A();
System.out.println(A.co
我正在学习Java,并编写以下简单代码:
public class Test {
private int a = b;
private final static int b = 10;
public int getA() {
return a;
}
}
public class Hello {
public static void main(String[] args) {
Test test = new Test();
System.out.println(test.getA());
问题来自于著名的SCJP 6书。
给予:
公共类Dark { int x= 3;public静态void (String[] args) { new ().go1();} void go1() { int x;go2(++x);}voidgo2( int y) {int x= ++y;System.out.println(x);}}
结果是什么?
A. 2
B. 3
C. 4
D. 5
E.汇编失败
F.在运行时引发异常
根据这本书,答案是:
✓E是正确的。在go1()中,局部变量x没有初始化。
我的问题是为什么go1()不能在第4行中使用初始化为6的实例变量x?
我知道这不会起作用,但这只是一个例子,所以我可以理解为什么它不会起作用。
public class MyClass {
final static JButton b;
public void myMethod() {
b = new JButton("Hello!");
}
}
1)为什么final static JButton b;线路有错误?为什么当我删除static关键字时,这个错误就消失了?
2)不管有没有static关键字,b = new JButton("Hello!");行都有错误。我想知道为什么会这样?我认为在一个方法中实
在编写类时,我一直是个好孩子,所有成员变量都以m_为前缀
class Test {
int m_int1;
int m_int2;
public:
Test(int int1, int int2) : m_int1(int1), m_int2(int2) {}
};
int main() {
Test t(10, 20); // Just an example
}
然而,最近我忘了这样做,最后写道:
class Test {
int int1;
int int2;
public:
// Very questionable, but of
说:“如果一个NewExpression被用作带有作用域存储类的函数局部变量的初始化器,并且ArgumentList到new是空的,那么实例将在堆栈上分配,而不是在堆上分配,或者使用类特定的分配器。”
这是否意味着在下面的程序中,C的一个对象完全在堆栈上分配,而没有任何堆分配?
class C {
int x;
}
void main() {
scope c = new C();
}
另外:为什么它只适用于空参数列表?
我怀疑我是否正确理解,因为我读到的所有其他D材料都说,类是在堆中分配的。我想确认一下。
可能重复:
在Java中,变量有默认值,对吗?甚至数组都由编译器初始化。
所以我不明白以下几点:
int c;
for(int i = 0; i < 10; i++){
c = i + 5;
}
System.out.println("Result = "+c);
为什么我会得到一个编译器错误:
局部变量c可能没有初始化。
编译器默认情况下不是将c初始化为0吗?
那么,为什么我得到这个错误,为什么错误消失了,如果我明确地做了int c = 0
给定两个.java文件:
// Car.java
class Car {
static int counter = 0; // Class field
Car () { counter++;}
}
和
// Cars.java
public class Cars{
public static void main(String[] args){
System.out.println(Car.counter); // Does this instantiate a Car?
}
}
我正在学习Java,我只是想准确地学习(学究?)这里。
编译,然后
谁能解释这是怎么回事?
public class MagicFinal {
public static void main(String[] args) {
System.out.println(A.s);
}
}
class A {
static {
System.out.println("class has been loaded");
}
public static final String s = "final";
public static final Intege
我已经检查了和,但是我仍然没有得到原因的答案。
为什么静态块可以分配在它之后声明的静态变量,但是不能访问它呢?
class Parent {
static {
i = 2; // valid
// can only assign new value to it instead of accessing it?
// System.out.println(i); // invalid - compile-error
}
static int i = 0;
s
这将是一个快速的问题。我不太明白为什么会发生这种事,所以我会通过简单的例子向你们展示什么困扰着我。
第一个示例:
private static Point pt;
public static void Main(string[] args)
{
pt.Display();
}
public struct Point
{
public int X;
public int Y;
public void Display()
{
Console.WriteLine("X = {0}, Y = {1}", X, Y);
class abc {
int a = 0;
static int b;
static abc h = new abc(); //line 4
public abc() {
System.out.println("cons");
}
{
System.out.println("ini");
}
static {
System.out.println("stat");
}
}
public class ques {
下面是一个简单的C#结构示例。
public struct MyStruct
{
public int a;
public void Foo()
{
//Do something
}
}
public class Test
{
Mystruct st;
void DoSomething()
{
st.Foo();
}
}
我知道如果我们使用不带new的struct instance,成员字段必须在使用前初始化。但是上面的例子没有任何错误。为什么?
我已经摆弄一个程序大约20分钟了,我发现出于某种原因,它不允许我在初始化列表中使用继承的变量。例如,该方案:
class A {
protected:
int i;
};
class B : public A {
public:
B() : i(45) { }
};
int main() {
B b;
}
会给出错误
错误:类“B”没有任何名为“i”的字段
但是,如果将构造函数更改为:
B() { i = 45; }
它会编译。
我不知道你不能初始化继承的变量。我的问题是,为什么?
下面是一些简单的java代码。
class Test {
public static void main(final String[] args) {
TestClass c = new TestClass();
System.out.println(c.x);
}
}
class TestClass {
{
x = 2;
}
int x = 1;
}
我正在得到答案1.为什么?是否没有用于初始化的构造函数?
在以下代码中:
class Class
{
private:
LUID luid;
public:
Class()
{
luid = { 0, 0}; // A. Does not compile
LUID test = {0, 0}; // B. Compiles
test = {1,1}; // C. Does not compile
}
为什么A和C不正确,而B是好的?
对于A和C,我得到的错误是:
错误C2059:语法错误:'{‘
错误C2143:语法错误:'{‘前缺少';’
错误C2143:语法错误:'}‘前缺少';’
我认为这与C++版本有
在我看来,这似乎是一种不一致的原因,我对此感到有些困惑。
例如
public class Test
{
static int a;
public static void main(String[] args)
{
System.out.println(a);
}
}
因此,这将像预期的那样打印出0。但如果我们有了这个,
public class Test
{
public static void main(String[] args)
{
int a;
System.out.println(a);
public class Test15 {
public static void main(String[] args) {
System.out.println(B.x);
}
}
abstract class A {
static int x=99;
A() {
System.out.println("A DC");
}
static {
System.out.println("A SB");
}
}
class B extends A {
我试图更好地理解声明和初始化,我真的不明白为什么你可以在OnClick中更改按钮的文本,即使它不能访问OnCreate,因为它是另一个函数。
当还在onCreate中声明变量时,它不起作用,但只有初始化起作用。请解释一下原因。谢谢
package com.example.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class Mai
我有一个java类如下所示:
public class MyClass {
public MyClass() {
System.out.println("In Constuctor.");
}
{
System.out.println("Where am I?");
}
public static void main(String[] args) {
new MyClass();
}
}
上述类别的输出如下:
Where am I?
In Constuctor.
static int counter // will initalized to 0
但是,如果我在类中设置了这个变量,它就不会被初始化,我必须在类之外初始化它。
class Test {
static int counter; // not initialized
};
...
Test::counter = 0;
我知道静态变量存储在内存中的BSS段中,默认情况下初始化为0,那么当我使类中的静态没有初始化时,为什么会出现这种情况呢?
第一种情况:
class x
{
public:
x(){}
int mem;
}
第二种情况:
class x
{
public:
int mem;
}
int main()
{
x a;
std::cout << a.mem; //member not initialized error in second case
}
如果我们没有定义默认的构造函数,编译器会添加一个;构造函数的功能就是初始化内存。那么,为什么它在第二种情况下会给出一个错误,而在第一种情况下却没有呢?
在下面的代码中,当访问带有类名的静态变量时,它不会抛出一个前向引用错误,但是在没有类名的情况下访问它。
为什么在使用类名进行访问时不会发生这种情况?
class Test{
static {
System.out.println(a); // shows error
a = 99; // and this line too doesn't give error
System.out.println(Test.a); // this line doesn't
}
static int a = 10;
package com.static2;
public class Static {
final static int y;
{
y=8;// error: the value cant be initialized
}
}
我们可以访问非静态块中的静态成员,但是为什么不能访问非静态块中的静态final成员呢?
考虑一下Singleton:
public final class MySingleton {
private static class Nested
{
private static final MySingleton INSTANCE = new MySingleton();
}
private MySingleton()
{
if (Nested.INSTANCE != null)
{
throw new IllegalStateException("Alrea
我对此很困惑。我的意思是:
public class minMax {
private int min = Integer.MAX_VALUE;
public void changeMin() {
min = 10;
}
public static void main (String args[]) {
minMax ob1 = new minMax();
ob1.changeMin();
System.out.println(ob1.min); // outputs 10 <<&
我有三个常量浮点数,它们的值要在类的构造函数中分配给它。
我在构造函数之前声明所有三个常量。作为一个实验,我为每一个设置了不同的修饰符:
public static float defaultdim;
public static final float maxdim;
public final float mindim;
我的IDE Eclipse检测到第二个常量maxdim的错误,即:
可能尚未初始化空白的最终字段max线头。
让我困惑的不是为什么会出现错误,而是为什么在mindim的情况下没有出现错误,这也是最终的,考虑到错误消息与变量是final这一事实相关联。换句话说,出现错误
import UIKit
import MediaPlayer
下面是一个错误:类'playMusicViewController‘没有减缩器,我不确定为什么在视图控制器类中需要初始化器,因为我的其他视图控制器没有视图初始化器。
class playMusicViewController: UIViewController {
var play : MPMusicPlayerController
var selectedSong : MPMediaItemCollection
@IBAction func play (sender: AnyObject){
我想要创建一个接口,它将强制实现它的所有类定义一个静态的最终整数变量:
public interface FooInterface {
static final int bar;
}
但是编译器说“变量'bar‘可能还没有初始化”。为什么我必须在接口中给它一个值?我希望每个实现都能定义自己的值,所以在我看来,必须将一些永远不会被使用的任意数字放在那里似乎是不合逻辑的。
我目前正在编写一个类,以便使用AsyncTask将一些数据导出到CSV。但是,当我调用它的构造函数并传入要设置的上下文时,我已经编写了类的空指针异常。我的CSV写作课如下:
public class ExportCSVTask extends AsyncTask<String, Void, Boolean> {
Context mContext;
public ExportCSVTask(Context context){
Log.e("Error in MainActivity","Inside