2017-02-24 87 views
1

我是新来的stackoverflow和最近感兴趣的android应用程序设计。 我是一名C语言编程人员,因此不熟悉java语法。#define在java中使用/ android studio

在C或一些编译器我以前用过,他们支持一个名为“#定义”语法,我可以把语句转换成什么样子:

#define (tried && sleepy) BAD_MOOD 
#define (happy && joy)  GOOD_MOOD 

的情况下使用,如:

if (GOOD_MOOD) 
    GO_TO_WORK 
else if (BAD_MOOD) 
    SICKLEAVE 
else 
    ... 

java是否有这样的语法?或者,我应该定义许多布尔变量吗?

+0

我应该继续关于这个存在的问题的看法吗? – Simon

+0

另一件事:如果你考虑在这里更频繁地发帖,花一些时间在[帮助];并学习在这里问什么/如何... – GhostCat

回答

0

Java没有#define;或任何其他类型的宏观支持;因为它 甚至没有预处理的概念。

鉴于你的意见:首先,你真的想退后一步。你不通过应用C语言学习Java。期。有许多现有的文档总结了C和Java之间的重要差异;你从搜索和阅读这些东西开始。

Then:real不同之处在于Java是一种(很重,但不是100%)面向对象的编程语言; C是而不是。所以你不仅要改变语法元素,你应用不同的概念。第一个起点是SOLID原则。

然后有些微妙的东西,比如Java编码风格指南 - 它指示简单的东西如“变量名中没有_chars”(除了SOME_CONSTANT)。

和关于你的例子,一个简单的例子看起来像:

public class Class { 
    private final static int MAX_COUNT_OF_STUDENTS = 50; 

    private int numberOfStudents; 
    private int numberOfBooks; 

    public void setNumberOfStudents(int newCount) { 
    numberOfStudents = newCount; 
    } 

    public boolean isFull() { 
    return (numberOfStudents <= MAX_COUNT_OF_STUDENTS); 
    } 
    ... 

也就是说,你将如何在Java中处理这一事情。关键是设计代表您打算建模的现实世界中的对象的类;作为方法添加所需的行为。

除此之外:即使在C世界,我也会非常谨慎地使用#define这种方式。是的,他们很方便,有自己的位置;但使用它们只是为了安全打字,就像在你的例子中,我会考虑一个不好的的做法。

+0

所以你认为使布尔变量的数字是一个好方法? 即 布尔class_is_full = false; boolean books_are_ready = false; 布尔start_the_class = false; if(number_of_students == 50)class_is_full = true; if(number_of_books> = 50)books_are_ready = true; if(class_is_full && books_are_ready) start_the_class = true; 基本上,我想让我的代码看起来可以理解。 – Simon

+0

我增强了我的答案;但只是为了记录:不要回来更多的问题。你处于一个非常基础的水平;这需要你学习。这是不是一个地方,你得到免费教学;-) – GhostCat

+0

谢谢你的时间来演示基于我的例子的基本。我理解C和java之间的一些(并非全部)不同。 SOLID原则听起来很合理,但我很难遵循。但无论如何,这是我应该从哪里开始。再次感谢。 – Simon