public class ClassDemo { public static int sum=1; public ClassDemo(){ sum=sum+5; } } class ClassDemoTest extends ClassDemo{ public static void main(String[] args){ ClassDemo demo1=new ClassDemo(); ClassDemo demo2=new ClassDemo(); System.out.println(sum); } }
时间: 2024-03-31 14:33:01 浏览: 118
这段代码定义了两个类:ClassDemo和ClassDemoTest。其中ClassDemo类有一个静态变量sum和一个无参构造方法,在构造方法中对sum进行加5操作。ClassDemoTest类继承自ClassDemo类,包含了一个main方法。
在main方法中,首先创建了两个ClassDemo的实例对象demo1和demo2,由于ClassDemo的构造方法中对静态变量sum进行了加5操作,因此实例对象创建时sum的值分别为6和11。最后输出sum的值,结果是11。因为sum是静态变量,所以在ClassDemo和ClassDemoTest两个类中共享。
相关问题
ForkJoinPool demo
ForkJoinPool是Java中的一个并发工具,用于实现任务的分解和合并,以充分利用多核处理器的性能。下面是一个简单的ForkJoinPool的示例代码:
```java
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.RecursiveTask;
public class ForkJoinPoolDemo {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
ForkJoinPool pool = new ForkJoinPool();
int sum = pool.invoke(new SumTask(arr, 0, arr.length - 1));
System.out.println("Sum: " + sum);
}
static class SumTask extends RecursiveTask<Integer> {
private static final int THRESHOLD = 2;
private int[] arr;
private int start;
private int end;
public SumTask(int[] arr, int start, int end) {
this.arr = arr;
this.start = start;
this.end = end;
}
@Override
protected Integer compute() {
if (end - start <= THRESHOLD) {
int sum = 0;
for (int i = start; i <= end; i++) {
sum += arr[i];
}
return sum;
} else {
int mid = (start + end) / 2;
SumTask left = new SumTask(arr, start, mid);
SumTask right = new SumTask(arr, mid + 1, end);
left.fork();
right.fork();
return left.join() + right.join();
}
}
}
}
```
在这个示例中,我们定义了一个SumTask类,它继承自RecursiveTask,这个类的作用是计算数组中的元素之和。如果数组的长度小于等于阈值(这里是2),那么直接计算和并返回。否则,将数组分成两部分,分别创建新的SumTask对象,并将它们放入线程池中计算。最后将两个结果相加并返回。在main方法中,我们创建了一个ForkJoinPool对象,并将SumTask对象放入线程池中计算。最后输出结果。
jna框架 demo示例
JNA(Java Native Access)是一种Java框架,用于简化Java程序与本地代码(C / C ++等)之间的交互。它提供了一组Java库和工具,允许开发人员在Java中调用本地库中的函数,并且无需编写任何本地代码。
下面是一个简单的JNA框架的示例:
假设我们有一个本地的动态链接库(例如.dll文件),其中包含一个用于求和的函数。
首先,我们需要在Java项目中导入JNA库:
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
然后,我们需要声明一个接口,用于定义要调用的本地函数:
public interface MyLibrary extends Library {
MyLibrary INSTANCE = (MyLibrary) Native.load((Platform.isWindows() ? "mylib" : "c"), MyLibrary.class);
int sum(int a, int b);
}
接下来,我们可以在Java中调用本地函数:
public class JnaDemo {
public static void main(String[] args) {
int result = MyLibrary.INSTANCE.sum(5, 10);
System.out.println("Sum result: " + result);
}
}
在上述代码中,我们使用了Native.load()方法加载本地库,并创建了一个实现我们定义的接口的实例。然后,我们可以直接调用sum()函数,并传递参数。最后,我们将结果打印到控制台。
通过JNA框架,我们可以方便地在Java中访问本地函数,而无需编写底层的本地代码。这大大简化了跨语言开发的过程,并提高了开发效率。
阅读全文