Perbandingan jinis ing basa Jawa
Sumber:
Theflashreads Ing kirim iki, sampeyan bakal sinau babagan sawetara jinis opsi perbandingan ing Jawa. Cara sing paling umum kanggo nemtokake manawa obyek tartamtu minangka
conto saka kelas, superclass, utawa antarmuka tartamtu yaiku nggunakake operator binary
instanceof . Iku kalebu mriksa null implisit lan ngasilake kesalahan kompilasi-wektu yen jinis ora kaiket. Nanging, ora ngidini panggunaan primitif lan mbutuhake jinis kasebut dikenal ing wektu kompilasi.
Yen sampeyan perlu mriksa runtime dinamis
Ing kasus iki, gunakake metode
boolean isInstance(Object obj) sing padha ing
Class . Uga kalebu mriksa null, nanging ngidini primitif:
a instanceof B
null instanceof B
a.getClass().isInstance(b);
Class<T> type = b.getClass();
type.isInstance(a);
int x = 4;
Integer.class.isInstance(x);
Priksa kompatibilitas rong jinis
Yen sampeyan kudu mriksa hubungan subtipe, gunakake metode
boolean isAssignableFrom(Class<?> cls) ing
Class . Iki bakal mbantu nyekel
NullPointerException .
Class<?> aClass = CharSequence.class;
Class<?> bClass = String.class;
bClass.isAssignableFrom(aClass());
CharSequence[].class.isAssignableFrom(String[].class);
Integer[].class.isAssignableFrom(String[].class);
Pola Matching (Jawa 14)
if(a instanceof B b) {
b.toString();
}
Jinis khusus
enum Color { WHITE, GRAY, BLACK }
Color.class.isEnum();
Color.WHITE instanceof Enum;
String[].class.isArray();
Class<?> componentType = obj.getComponentType();
int.class.isPrimitive();
Java.io - Operasi I/O ing Jawa
Sumber:
Sedheng Isi artikel iki babagan operasi I/O ing Jawa. Ing pangembangan aplikasi Android lan Java, input / output (Java I/O) minangka salah sawijining topik sing asring digunakake, nanging amarga sawetara alasan jarang kasebut. Nanging, orane katrangan saka aplikasi amba: contone, kita nindakake operasi I / O nalika ngowahi gambar bitmap kanggo format JPEG utawa nalika maca / nulis file biasa. Paket Java java.io nduweni kabeh kelas sing dibutuhake kanggo nindakake operasi I/O. Operasi kasebut ditindakake kanthi nggunakake benang. Sabanjure, thread mbantu nindakake operasi maca utawa nulis. Contone, nulis pesen menyang file.
Jinis-jinis lepen
Ana rong jinis serat ing basa Jawa:
- Byte Stream (Arus Byte)
- Aliran Karakter
Aliran byte
A Byte Stream digunakake kanggo maca lan nulis siji byte data. Iki kalebu kelas Java
InputStream lan
OutputStream .
InputStream mbantu maca data lan
OutputStream mbantu nulis data menyang target (bisa uga file).
Aliran karakter
Character Stream digunakake kanggo maca lan nulis siji karakter data. Iki kalebu kelas
Reader lan
Writer Java . Kanggo mangerteni
Reader lan
Writer , sampeyan kudu ngerti kelas asale kayata
InputStreamReader ,
FileReader ,
OutputStreamWriter ,
FileWriter lan liya-liyane.
InputStream lan OutputStream
InputStream digunakake kanggo maca data saka sumber (bisa uga file). Iku ora migunani ing dhewe, nanging wis sawetara turunan kelas kayata
FileInputStream ,
ByteArrayInputStream , lan
ObjectInputStream .
OutputStream digunakake kanggo nulis data menyang target (bisa uga file). Kelas asale yaiku
FileOutputStream ,
ByteArrayOutputStream , lan
ObjectOutputStream .
class InputOutput {
data class Car(val name: String): java.io.Serializable
fun fileStream() {
val outputStream = FileOutputStream("kotlin.txt")
outputStream.write(1)
outputStream.write("hello".toByteArray())
val inputStream = FileInputStream("kotlin.txt")
println(inputStream.read())
val msg = String(inputStream.readBytes())
println(msg)
outputStream.close()
inputStream.close()
}
fun byteArrayStream() {
val outputStream = ByteArrayOutputStream()
outputStream.write(1)
outputStream.write("hello".toByteArray())
val readByteArray = outputStream.toByteArray()
val inputStream = ByteArrayInputStream(readByteArray)
println(inputStream.read())
val msg = String(inputStream.readBytes())
println(msg)
outputStream.close()
inputStream.close()
}
fun objectStream() {
val car = Car(name = "BMW")
val fileOutputStream = FileOutputStream("kotlin.txt")
val objOutputStream = ObjectOutputStream(fileOutputStream)
objOutputStream.writeObject(car)
val fileInputStream = FileInputStream("kotlin.txt")
val objInputStream = ObjectInputStream(fileInputStream)
val carObject = objInputStream.readObject() as Car
println(carObject.name)
fileOutputStream.close()
objOutputStream.close()
fileInputStream.close()
objInputStream.close()
}
fun bufferStream() {
val fileOutputStream = FileOutputStream("kotlin.txt")
val outputStream = BufferedOutputStream(fileOutputStream)
outputStream.write("hello".toByteArray())
outputStream.flush()
val fileInputStream = FileInputStream("kotlin.txt")
val inputStream = BufferedInputStream(fileInputStream)
val msg = String(inputStream.readBytes())
println(msg)
fileOutputStream.close()
fileInputStream.close()
}
}
Kajaba saka aliran ing ndhuwur, kita uga duwe
DataInputStream lan
DataOutputStream . Dheweke nindakake pakaryan sing padha karo benang liyane. Bentenane yaiku
DataInput /
OutputStream utamane digunakake kanggo maca / nulis jinis primitif, dene
ObjectInput /
OutputStream utamane digunakake kanggo obyek lan liya-liyane.
Pembaca lan Penulis
Ing Java I / O, yen kita maca / nulis data menyang stream, kita kudu ngowahi menyang bita dhisik. Mung banjur kita bisa maca utawa nulis menyang stream.
InputStreamReader lan
OutputStreamWriter nindakake iki kanthi otomatis.
class ReaderWriter {
fun readerWriter() {
val outputStream = FileOutputStream("kotlin.txt")
val writer = OutputStreamWriter(outputStream)
writer.write("Hello Kotlin")
writer.flush()
val inputStream = FileInputStream("kotlin.txt")
val reader = InputStreamReader(inputStream)
println(reader.readText())
}
}
Paralel maca lan nulis
Kadhangkala kita butuh dhukungan multithreading ing Aliran. Cukup, kita pengin maca lan nulis menyang stream saka benang sing kapisah. Kanggo iki kita kudu nggunakake
PipedInput /
OutputStream .
fun pipedStream() {
val inputStream = PipedInputStream()
val outputStream = PipedOutputStream()
inputStream.connect(outputStream)
val writeThread = object : Thread() {
override fun run() {
try {
for (i in 0..100) {
outputStream.write(i)
println("Write : $i")
sleep(100)
}
} catch (e: Exception) {
e.printStackTrace()
}
}
}
val readThread = object : Thread() {
override fun run() {
try {
for (i in 0..100) {
println("Read : ${inputStream.read()}")
}
} catch (e: Exception) {
e.printStackTrace()
}
}
}
writeThread.start()
readThread.start()
}
GO TO FULL VERSION