2017-02-24 85 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