Поведение возврата x ++; определенный?

Singleton Shared Preferences Class. это может помочь другим в будущем.

  import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;

public class SharedPref
{
    private static SharedPreferences mSharedPref;
    public static final String NAME = "NAME";
    public static final String AGE = "AGE";
    public static final String IS_SELECT = "IS_SELECT";

    private SharedPref()
    {

    }

    public static void init(Context context)
    {
        if(mSharedPref == null)
            mSharedPref = context.getSharedPreferences(context.getPackageName(), Activity.MODE_PRIVATE);
    }

    public static String read(String key, String defValue) {
        return mSharedPref.getString(key, defValue);
    }

    public static void write(String key, String value) {
        SharedPreferences.Editor prefsEditor = mSharedPref.edit();
        prefsEditor.putString(key, value);
        prefsEditor.commit();
    }

    public static boolean read(String key, boolean defValue) {
        return mSharedPref.getBoolean(key, defValue);
    }

    public static void write(String key, boolean value) {
        SharedPreferences.Editor prefsEditor = mSharedPref.edit();
        prefsEditor.putBoolean(key, value);
        prefsEditor.commit();
    }

    public static Integer read(String key, int defValue) {
        return mSharedPref.getInt(key, defValue);
    }

    public static void write(String key, Integer value) {
        SharedPreferences.Editor prefsEditor = mSharedPref.edit();
        prefsEditor.putInt(key, value).commit();
    }
}

Просто вызовите SharedPref.init () в MainActivity один раз

SharedPref.init(getApplicationContext());

Для записи данных

SharedPref.write(SharedPref.NAME, "XXXX");//save string in shared preference.
SharedPref.write(SharedPref.AGE, 25);//save int in shared preference.
SharedPref.write(SharedPref.IS_SELECT, true);//save boolean in shared preference.

Для чтения данных

String name = SharedPref.read(SharedPref.NAME, null);//read string in shared preference.
int age = SharedPref.read(SharedPref.AGE, 0);//read int in shared preference.
boolean isSelect = SharedPref.read(SharedPref.IS_SELECT, false);//read boolean in shared preference.
21
задан Lazer 4 March 2010 в 08:13
поделиться

6 ответов

Да, это эквивалентно:

int bar()
{
  int temp = x;
  ++x;
  return temp;
}
40
ответ дан 16 October 2019 в 23:41
поделиться

Я знаю, что на этот вопрос отвечают значительно прежде, но здесь - почему он определяется. Составные операторы являются в основном сахаром синтаксиса для функций. Если Вы задаетесь вопросом, как инкремент происходит после возврата из функции, это не делает. Это происходит непосредственно перед тем, как оператор "функция" возвращает предыдущее значение.

Для целого числа, думайте о функции, определяемой оператора инкремента сообщения как это:

int post_increment(int *n)
{
    temp = *n;
    *n = *n + 1;
    return temp;
}
0
ответ дан 16 October 2019 в 23:41
поделиться

Он определен.

Возвращает значение x до увеличения. Если x является локальной (нестатической) переменной, это пост-инкремент не имеет никакого эффекта, поскольку локальные переменные функции перестают существовать, как только функция возвращается. Но если x является локальной статической переменной, глобальной переменной или переменной экземпляра (как в вашем случае), ее значение будет увеличиваться после возврата.

4
ответ дан 16 October 2019 в 23:41
поделиться

Большинство языков программирования, таких как C ++, рекурсивны в том порядке, в котором выполняются операции (здесь я не делаю никаких предположений о том, как код на самом деле реализуется компилятором) . Сложные операции, которые состоят из любых четко определенных операций, сами по себе хорошо определены, поскольку каждая операция выполняется по принципу «последним пришел - первым вышел».

Постинкремент возвращает значение переменной, которая увеличивается до , увеличивая его, поэтому операция return получает это значение. Никакого специального определения этого поведения не требуется.

2
ответ дан 16 October 2019 в 23:41
поделиться

Да, это ... он вернет значение x перед его увеличением, а после этого значение x будет + 1 ... если это имеет значение .

7
ответ дан 16 October 2019 в 23:41
поделиться

Да.

В postincrement (x++) значение x оценивается (возвращается в вашем случае) до добавления 1.

В preincrement (++x) значение x оценивается после добавления 1.

Edit: Вы можете сравнить определение pre и post инкремента в ссылках.

5
ответ дан 16 October 2019 в 23:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: