settings.system.getlong取得的数据是long型吗
时间: 2023-11-12 13:04:19 浏览: 64
是的,`settings.system.getlong`取得的数据是long型。在Python中,long型是一种整数类型,可以表示任意大小的整数,而不会出现溢出的问题。在Python 3中,int型已经默认为long型。因此,如果你使用的是Python 2版本,需要特别注意在对大整数进行计算时可能会出现溢出的情况。
相关问题
Java Long.getLong 和 Long.paseLong 的区别
Java 中的 Long.getLong() 和 Long.parseLong() 方法都用于将字符串转换为 long 类型,但它们有一些区别。
1. Long.getLong() 方法:
- 这个方法可以将字符串转换为 long 类型,但它还可以接受一个可选的默认值参数。
- 如果输入的字符串表示的是一个有效的 long 值,该方法将返回该值。
- 如果输入的字符串无法解析为 long 值(例如包含非数字字符),或者为 null,该方法将返回默认值。
- 默认值可以通过使用系统属性或在方法调用时显式指定。
2. Long.parseLong() 方法:
- 这个方法将一个字符串解析为 long 类型的值,但不接受默认值参数。
- 如果输入的字符串表示一个有效的 long 值,该方法将返回该值。
- 如果输入的字符串无法解析为 long 值(例如包含非数字字符)或为 null,该方法将抛出 NumberFormatException 异常。
总结:
- 如果你想要在解析失败时提供一个默认值,可以使用 Long.getLong() 方法。
- 如果你只关心解析是否成功,并且不需要默认值,可以使用 Long.parseLong() 方法。
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.photodiary2, PID: 11446 android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1 at android.database.AbstractCursor.checkPosition(AbstractCursor.java:515) at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:138) at android.database.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:76) at android.database.CursorWrapper.getLong(CursorWrapper.java:131) at com.example.photodiary2.PhotoPreview.goToText(PhotoPreview.java:237) at com.example.photodiary2.PhotoPreview$2.onClick(PhotoPreview.java:75) at android.view.View.performClick(View.java:7125) at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1131) at android.view.View.performClickInternal(View.java:7102) at android.view.View.access$3500(View.java:801) at android.view.View$PerformClick.run(View.java:27336) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
这个错误通常发生在从 Cursor 对象中获取数据时,Cursor 对象的位置不正确或者 Cursor 对象为空。具体来说,这个错误表示你尝试获取 Cursor 对象中某个位置的数据,但是 Cursor 对象的位置是 -1,这是不合法的。这通常发生在以下代码中:
```
Cursor cursor = db.query(...);
if (cursor != null) {
cursor.moveToFirst();
// 获取数据
long data = cursor.getLong(index);
} else {
// Cursor 对象为空
// ...
}
```
在上面的代码中,如果 Cursor 对象不为空,则调用 `moveToFirst()` 方法将 Cursor 对象的位置移动到第一行,然后尝试获取数据。但是如果 Cursor 对象没有数据,则 `moveToFirst()` 方法返回 false,Cursor 对象的位置仍然为 -1,这时就会抛出 `CursorIndexOutOfBoundsException` 异常。
要解决这个问题,你需要在尝试获取 Cursor 对象中的数据之前,先判断 Cursor 对象是否为空,以及 Cursor 对象中是否有数据。例如,可以修改上面的代码如下:
```
Cursor cursor = db.query(...);
if (cursor != null && cursor.moveToFirst()) {
// 获取数据
long data = cursor.getLong(index);
} else {
// Cursor 对象为空或者没有数据
// ...
}
```
在上面的代码中,我们首先判断 Cursor 对象是否为空,如果不为空并且有数据,则调用 `moveToFirst()` 方法将 Cursor 对象的位置移动到第一行,然后可以安全地获取 Cursor 对象中的数据。如果 Cursor 对象为空或者没有数据,则不会尝试获取数据,避免了 `CursorIndexOutOfBoundsException` 异常的出现。
阅读全文