我正在学习不可变的对象.我必须使下面的类不可变.我做得对吗?
import java.awt.Point;
public class MyImmutablePoint {
Point point;
public MyImmutablePoint(Point point) {
super();
this.point = point;
}
public MyImmutablePoint() {
this (new Point (0,0));
}
public Point getPoint() {
return point;
}
public void setPoint(Point point) {
this.point = point
}
}
Run Code Online (Sandbox Code Playgroud)
"不变"类:
public final class MyImmutablePoint {
private final Point point;
public MyImmutablePoint(Point point) {
this.point = point;
}
public MyImmutablePoint() {
this (new Point (0,0));
}
public Point getPoint() {
return point;
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定这个toString方法.并且可能返回像Point这样的对象也可以像数组一样修改但不确定
我有多个线程访问class Aufzahlen和增加cc变量.我想知道我是不是把cc放在volatile上但我的同步方法是否有任何错误空间?由于cc变量一次只能访问一次.
线程是否仍然可以在自己的缓存中包含cc变量,因此它变得混乱?我一直在运行这段代码示例,到目前为止没有发现任何错误.
public class Aufzahlen {
private int cc=1;
public synchronized void aufzahlen() throws InterruptedException {
cc = cc +1;
}
public synchronized void printa() {
// TODO Auto-generated method stub
System.out.println("Thread: " + Thread.currentThread() + "Zahl: " + cc);
}
{
Run Code Online (Sandbox Code Playgroud) 我无法理解为什么double xx并将yy其放入final构造函数中.为什么不让我只是把它们double xx和double yy.为什么他们必须final?我想这个目的的全部目的是创建一个immutable对象.
public class Point {
private final double x, y;
private double distance;
public Point(final double xx, final double yy) {
this.x = xx;
this.y = yy;
this.distance = -1;
}
}
Run Code Online (Sandbox Code Playgroud) 我还有一些关于同步和不稳定的东西.
我理解一个线程可以在本地安全地更改.从我到目前为止所读到的是synchronized> volatile.
假设我有一个不长或双的参数,所以基本上是一个标准的整数(没有原子).
我有一个同步方法,我用这个Integer做了很多工作.所有线程都会获得此Integer的更新版本吗?或者我是否必须宣布它是不稳定的?
public class stackoverflow {
private int x = 0;
public synchronized void rechnen(){
//dosomething
}
}
Run Code Online (Sandbox Code Playgroud)
基本上在rechnen()完成后,我得到了10000个线程,所有都会获得x的更新版本,因为我的方法是同步的?或者我是否必须宣布它是不稳定的?
我想把两个整数x和y变成一个像x,y一样的浮点数.所以基本上1和3的shud变成1,3
不知道怎么写这个:
float z = (float) x,y;
Run Code Online (Sandbox Code Playgroud) 在测试文档中,我发现我被问到以下代码中的问题是:
#include <iostream>
#include <stdlib.h>
#include <string.h>
using namespace std;
int main()
{
char* a = (char*) malloc (20);
char* b = (char*) malloc (20);
strcpy(b, "Secure Coding");
strcpy(a, "Insecure Coding");
a = b;
cout << a << endl;
cout << b << endl << endl;
free(a);
free(b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它是什么?