当前位置: 首页 > 知识库问答 >
问题:

如何在Java中实现C结构?我知道我应该使用类,但我想问一下以下Java代码是否有效?

谭嘉容
2023-03-14

让我们假设我想在协调计划中定义一个圆。在C中,我可以做这样的事情:

struct point{
    int x;
    int y;
};
struct circle{
    struct point center; //this line in particular I am not sure how to implement
    int radius;
};

在java中,我正在尝试以下操作...

public class Point{
    int x;
    int y;
}
public class Circle{
    Point center; //is this line correct? Or did I screw up?
    int radius;
}

如果上面的行不正确,请您为我提供正确的代码好吗?

共有1个答案

隆兴修
2023-03-14

如前所述,比较编程语言可能是一种有问题的学习方式。在这种情况下,C和Java是两种不同的语言。Java是面向对象的,而c不是。

在Java中,您确实可以定义一个类,正如您为点定义的那样。但缺少一个带参数的构造函数。

public class Point{
    int x;
    int y;

    public Point ( final int x , final int y ) {
        this.x = x ; 
        this.y = y ;
    }

}

实例化调用构造函数,传递参数。

Point p = new Point( 7 , 42 ) ;

如果类的主要目的是透明和不可变地通信数据,那么在Java 16中将类定义为记录。

public record Point ( int x , int y ) {}

编译器隐式创建构造函数、getter、等于

是的,您可以使用定义的类作为另一个类的成员字段的类型。

public record Circle ( Point center , int radius ) {}

实例化。

Circle c = new Circle( new Point ( 7 , 42 ) , 5 ) ;

转储到控制台。

System.out.println ( c ) ;
System.out.println ( c.point.y ) ;

 类似资料:
  • 我遇到了一些问题,AppEngine抱怨我的代码有Java1.8方法,而AppEngine需要Java1.7。下面是错误跟踪。我不知道该怎么修理它。

  • 我对Hibernate(JPA)很陌生。 正如您所看到的,当Gradle升级到5.0时,这个变通方法将会失败。 所以,我想问你我应该如何用Hibernate和Gradle构建我的代码。 根据一些SO的QA,我试图添加以下依赖项,但它不起作用。 null 错误输出如下所示(位a很长,但我不确定要解决的重要线索在哪里):

  • 问题内容: 我正在将Java库移植到C#。我使用的是Visual Studio 2008,因此没有停止使用的Microsoft Java语言转换助手程序(JLCA)。 我的方法是创建一个与Java库具有类似项目结构的新解决方案,然后将Java代码复制到ac#文件中,并将其逐行转换为有效的c#。考虑到我觉得Java易于阅读,两种语言之间的细微差别使我感到惊讶。 有些事情很容易移植(命名空间,继承等)

  • (我已经删除了上一个,所以我想你可以在编辑中找到它) 编辑 所以按照bad_coder在评论中告诉的以及他分享的链接中的大多数答案,我点击了“选项显示所有”,我得到了这个 1) 这里唯一有意义的是点击“”按钮,所以我点击了它 2) 现在我应该用路径替换突出显示的部分(换句话说,我在cmd中键入“where python”后得到的路径) 3) 这就是我发现的。那么我应该在突出显示的部分复制并粘贴哪一

  • 问题内容: 这个问题在很多地方都被问到,变化不尽。例如Java-getClassLoader()。getResource()不仅使我烦恼不已。)我仍然无法使其正常工作。 这是一个代码片段: 此作品-请注意,我硬编码的路径,包含剪辑文件,该文件的目录 是 有,而且 是 在同一目录作为我的.class文件。las,注释掉的代码仅返回url的空值。 其他大多数帖子似乎都涉及getResourceAsSt

  • 我拿不到输出。。有人能帮我得到输出吗 下面给出了程序运行的示例(注意:下面的粗体文本是用户输入的输入): 输入三角形的三条边