两个(简单?)Android / Java语法问题

时间:2016-04-24 00:03:17

标签: java c# android

我刚从Xamarin / C#切换到Android Studio / Java,并熟悉两种语言之间的差异。我正在阅读一本用java编写的安卓书,并且遇到了以下两行代码:

1)

PreferenceManager.getDefaultSharedPreferences(this)
  .registerOnSharedPreferenceChangeListener(preferencesChangeListener);

在第一行中,我对preferencesChangeListener的使用方式感到困惑。在C#中,您无法在不实例化对象的情况下将新的preferencesChangeListener对象抛出到参数中。那么在Java中,你是否允许隐式实例化?

2)

int screenSize = getResources().getConfiguration().screenLayout &
  Configuration.SCREENLAYOUT_SIZE_MASK;

其次,我很担心'&'这里使用的符号。我认为&符号用于布尔参数,但你在这里看到等式的左边是期望一个整数。这里发生了什么?

1 个答案:

答案 0 :(得分:2)

  1. 不,你不允许隐式实例化,如果没有实例化那个变量那么你可能会获得expr(A," is greater than ",B) --> symbol(A)," is greater than ",symbol(B). ,除非你调用它的方法是将它用作输出
  2. 在大多数语言中,包括java,NullPointerException是布尔运算符,&&是按位运算符。 &是按位AND,因此例如&将为(0101) & (1110)。在您的示例中,它用于将某些位清零。
相关问题