Tag: 实例变量

为什么可以在PHP中覆盖实例变量而不是在Java中?

考虑以下代码: name; } } class Foo extends Base { protected $name = “Foo”; } $f = new Foo(); echo $f->getName(); // output: Foo $b = new Base(); echo $b->getName(); // output: Base 因为在Java等其他语言中不允许覆盖实例变量,但在PHP中是可能的。 是因为PHP是弱类型语言所以有可能吗?

类的对象作为类中的实例变量

可能重复: 一个类如何拥有自己类型的成员,这不是无限递归吗? 代码: public class Test2{ private Test2 subject = new Test2(); //Create Test2 object in Test2 private int num; } 问题: 为什么Java允许执行上面的代码,但C ++不允许? 上面的代码是否创建了无限数量的对象? 由于Test2本身包含一个Test2对象,它再次包含一个Test2对象,该对象本身有一个Test2对象,依此类推。

通过类的java sql连接

我有以下代码: import java.sql.*; import java.net.*; public class binsz { public void dbConnect(String db_connect_string, String username, String password) { try { Class.forName(“net.sourceforge.jtds.jdbc.Driver”); Connection conn = DriverManager.getConnection(db_connect_string, username, password); // System.out.println(“connected”); } catch (Exception e) { e.printStackTrace(); } } public void dbQuery(String query) { try { Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(query); } catch (Exception […]

JNI – 如何使用具有不同字段的多个Jni包装器实例?

背景 我有一个使用JNI(使用NDK)在Java和C / C ++中编码的android项目。 我已经在java端创建了一个Jni java包装器,它将自己完成所有Jni操作,而没有其他java类可以直接访问除此包装器之外的jni操作。 问题 问题是,我希望创建这个包装器的多个实例,而Jni部分应该有一个每个Jni包装器的实例。 这是一个问题,因为Jni部分为所有实例保存相同的字段。 这个问题 我怎样才能解决这个问题,这样对于jni包装器的每个java实例,jni部分都会有一个实例? 我在想,也许我可以将所有字段放入C ++类,并且有一个init()函数,它将为JniWrapper的CTOR返回它的新实例,从那时起,对于需要字段的每个JNI函数,它会将此类作为参数。 也许它可能是这个链接上显示的指针。 可悲的是,我不知道该怎么做。 有人可以帮忙吗? 样品 这是一个示例代码,我希望这些代码能让那些不了解问题的人更清楚: java部分: public class JniWrapper { static { System.loadLibrary(“JniTest”); } private native void foo(Bitmap bitmap); } jni部分: … // sadly, all of those fields are actually a global fields int _intField; float _floatField; //those are just sample […]

错误:Java中预期的标识符

我是Java的新学习者。 我学到了一些Java核心概念。 运行以下代码时,我得到了标识符预期错误: class Sekar { public static int i,j,k; i = 900; static void max() { j = 100; if(i>j) { k=i; } else { k=j; } System.out.println(“The maxmimum vale between”+i+”and”+j+”is :”+k); } public static void main(String[] args) { max(); } } 当我编译我的代码时,我收到以下错误: error: identifier expected i = 900; ^ 任何人都能解释为什么会发生这种错误吗? 当我谷歌关于标识符预期错误时,我发现当没有数据类型声明变量时会发生此错误,但我为所有变量i,j,k声明了这一点。 当我重新声明数据类型,同时将值设置为“i”,如int i […]

Java实例变量用方法初始化

我对下面这段代码感到有点困惑: public class Test{ int x = giveH(); int h = 29; public int giveH(){ return h; } public static void main(String args[]) { Test t = new Test(); System.out.print(tx + ” “); System.out.print(th); } } 这里的输出是0 29 ,但我认为这必须是编译器错误,因为当涉及方法giveH()时,变量h应该尚未初始化。 那么,编译是从上到下进行的吗? 这为何有效? 为什么x 0的值不是29?

在引用变量上调用方法vs在新对象上调用方法

我在调用非静态方法时感到困惑 class A { void doThis() {} public static void main(String… arg) { A a1 = new A(); a1.doThis(); // method – 1 new A().doThis(); // method – 2 } } 我知道方法1和方法2都会调用doThis() ,但是有任何function差异吗? 方法-2中新对象的引用是什么。

实例变量部分中的Java ArrayList add()方法

在您通常声明/定义实例变量的Java类中,我希望将ArrayList作为实例变量之一并使用一些元素初始化它。 一种方法是声明ArrayList并在构造函数中初始化它。 但是,我想知道为什么初始化构造函数之外的值是非法的。 例如, public class Test { // some instance variables… private ArrayList list = new ArrayList(); list.add(“asdf”); // methods here… } 所以我觉得这是非法的。 但为什么这是非法的呢?

哪个先运行? 实例变量或超级构造函数的默认值?

根据SCJP6(页577),我发现实例变量在超类构造函数完成之前被赋予了默认值,我在Debugg模式中尝试了一个例子,但我看到超级承包商在实例变量获取其默认值之前运行,可以任何一个解释那对我来说? 用例以防万一有人想尝试一下: package courseExercise; class test { test() { System.out.println(“Super Constructor run”); } } public class Init extends test { private Integer i = 6; private int j = 8; Init(int x) { super(); System.out.println(“1-arg const”); } Init() { System.out.println(“no-arg const”); } static { System.out.println(“1st static init”); } public static int d = 10; { […]

Java – 访问私有实例变量

我需要从以下类列表(Species.java)访问私有变量,以便在KlingonOx.java类中使用它们。 KlingonOx.java类的目的是确定大象物种的种群数量将大于克林贡牛种的数量。 这是Species.java类: import java.util.Scanner; public class Species { private String name; private int population; private double growthRate; public void readInput() { Scanner keyboard = new Scanner(System.in); System.out.println(“What is the species’ name?”); name = keyboard.nextLine(); System.out.println(“What is the population of the species?”); population = keyboard.nextInt(); while(population 0) && (populationAmount>0) ) { populationAmount = (populationAmount + […]