JavaRush /Blog Jawa /Random-JV /Ngopi #180. Variabel ing basa Jawa: apa iku lan carane di...

Ngopi #180. Variabel ing basa Jawa: apa iku lan carane digunakake. 5 Bab Sampeyan Kudu Ngerti Babagan Serialisasi lan Deserialisasi ing Jawa

Diterbitake ing grup

Variabel ing basa Jawa: Apa iku lan carane digunakake

Sumber: Hackernoon Ana patang jinis variabel ing Jawa, gumantung ing ngendi sing diumumake ing program kasebut. Dina iki sampeyan bakal sinau conto lan beda saben jinis. Ngopi #180.  Variabel ing basa Jawa: apa iku lan carane digunakake.  5 Bab Sampeyan Kudu Ngerti Babagan Serialisasi lan Deserialisasi ing Jawa - 11. Variabel Instance utawa kolom Instance yaiku variabel sing diumumake ing kelas tanpa tembung kunci statis , nanging ing njaba metode, konstruktor, utawa blok kode. Variabel kasebut bisa diumumake ing ngendi wae ing kelas. Sampeyan bisa ngumumake kanthi utawa tanpa modifier akses, kayata umum , pribadi , dilindhungi utawa standar (dudu tembung kunci).
public class MyClass {

  //instance field 1
  private String instanceField1;

  public MyClass(){} //Constructor

  //instance field 2
  public int anotherInstanceField2;

  public void setInstanceField(String parameterVariable) {...} //instance method

  //instance field 3
  boolean instanceField3;

  public static void main(String[] args) {
    System.out.println("field 1 value: " + instanceField1); // = null
    System.out.println("field 2 value: " + anotherInstanceField2); // = 0
    System.out.println("field 3 value: " + instanceField3); // = 0
  }
}
Yen kolom instance ora diwenehi nilai ing wektu deklarasi, bakal diwenehi nilai standar nol yen jinis primitif, kayata ( int , boolean , long , float ), utawa null yen dudu jinis primitif, kayata ( String , Integer , AnyClass ). Iki diarani kolom utawa variabel instance amarga kalebu instance saka obyek sing digawe saka kelas sing diumumake.
public Main {

  public static void main(String[] args) {
    MyClass obj1 = new MyClass();
    MyClass obj2 = new MyClass();

    //Now we can access every 'public' field declared in the MyClass class
    // from the newly created object 'obj'

    obj1.anotherInstanceField2 = 11;
    obj2.anotherInstanceField2 = 33;

    System.out.println(obj1.anotherInstanceField2); // prints '11'
    System.out.println(obj2.anotherInstanceField2); // prints '33'
  }
}
Dadi, saben kolom instance unik kanggo obyek, kaya sing katon ing cuplikan ing ndhuwur. Ing kono, obj1 lan obj2 duwe nilai unik sing ditugasake menyang lapangan conto masing-masing. 2. Kolom kelas utawa kolom statis yaiku kolom sing diumumake nganggo tembung kunci statis . Dheweke diumumake ing njero kelas, nanging ing njaba metode, konstruktor, utawa blok kode. Dheweke uga bisa diumumake ing posisi apa wae ing kelas, kanthi utawa tanpa modifier akses, kayata public , private , protected , utawa default (dudu tembung kunci).
public class MyClass {

  //static field
  public static String staticField;

  public MyClass(){} //Constructor

}

class Main {

  public static void main(String[] args) {

    MyClass obj = new MyClass();

    obj.staticField //will throw Not defined Error

    //Now we cannot access the static field declared in MyClass class from the
     // newly created object 'obj' because static fields are not attached to any
    // object. They belong solely to the class they are declared and can only be
    // accessed from their class.

    MyClass.staticField = "I am a static field";
    System.out.println(MyClass.staticField); // prints 'I am a static field'
  }
}
Kolom statis mung bisa diakses liwat kelas lan ora saka obyek apa wae kaya sing ditampilake ing potongan kode ing ndhuwur. 3. Parameter utawa Variabel Argumentasi yaiku variabel sing diumumake ing konstruk metode antarane kurung kriting pambuka lan panutup saka tanda tangan metode. Iki digunakake kanggo ngirim nilai utawa obyek menyang metode.
public class MyClass {

  //instance field
  public String instanceField;

  public MyClass(){} //Constructor

  //instance method with a parameter variable
   public void setInstanceField(String parameterVariable) {
      instanceField = parameterVariable;
   }
}

class Main {

  public static void main(String[] args) {

    MyClass obj = new MyClass();

    obj.setInstanceField("From a parameter variable");

    System.out.println(obj.instanceField); // prints 'From a parameter variable'
  }
}
4. Variabel lokal yaiku variabel sing diumumake ing sawijining metode utawa blok kode, contone, ing blok pernyataan if , for loop , while loop , blok statement switch , lan liya-liyane.
public Main {

  public static void main(String[] args) {
    MyClass obj1 = new MyClass(); // 'obj1' is local reference variable

    int id = 1; // 'name' is a local variable here.

    if (id > 1) {
        String tempName = "Austin"; // 'tempName' is a local reference variable
     }
  }
}
Ing kode iki sampeyan bisa sok dong mirsani nggunakake referensi karo sawetara variabel, nalika id variabel lokal ora kasebut minangka variabel referensi. Variabel non-primitif minangka variabel referensi. Contone, obj1 minangka variabel saka jinis MyClass lan tempName minangka variabel saka jinis String , lan ing kene loro jinis kasebut dudu jinis primitif. Ing kasus iki, id minangka variabel jinis int , yaiku jinis data primitif. Mulane, iku variabel non-referensi.

5 Bab Sampeyan Kudu Ngerti Babagan Serialisasi lan Deserialisasi ing Jawa

Sumber: Devgenius Kanthi tutorial iki, sampeyan bakal nambah kawruh babagan cara kerja serialisasi lan deseralisasi. Serialisasi ing Jawa mbantu ngowahi obyek sing wis ana dadi stream byte. Kosok baline, deserialization ndadekake stream byte dadi obyek. Nggunakake serialisasi lan deseralisasi ing Jawa, informasi babagan obyek bisa ditransfer saka siji JVM menyang liyane.

#1 Serialisasi

Sadurunge njlentrehake rinci, ayo deleng kelas SerializeUtils.java lan Person.java . Ing kene bakal mbantu kita nindakake serialisasi lan deseralisasi nggunakake conto tartamtu.

SerializeUtils.java

package com.techteam.serialization;

import java.io.*;

public class SerializeUtils {
    public static <T> void serialize(T input, String fileName) throws IOException {
        FileOutputStream file = new FileOutputStream(fileName);
        ObjectOutputStream out = new ObjectOutputStream(file);
        out.writeObject(input);
        out.close();
        file.close();
    }

    public static <T> T deserialize(String fileName) throws IOException, ClassNotFoundException {
        FileInputStream file = new FileInputStream(fileName);
        ObjectInputStream in = new ObjectInputStream(file);
        T result = (T) in.readObject();

        return result;
    }

    public static void externalSeialize(Externalizable e, String fileName) throws IOException {
        FileOutputStream file = new FileOutputStream(fileName);
        ObjectOutputStream out = new ObjectOutputStream(file);
        e.writeExternal(out);
        out.close();
        file.close();
    }

    public static void externalDeseialize(Externalizable e, String fileName) throws IOException, ClassNotFoundException {
        FileInputStream file = new FileInputStream (fileName);
        ObjectInputStream in = new ObjectInputStream (file);
        e.readExternal(in);
        in.close();
        file.close();
    }
}

Wong.Jawa

package com.techteam.serialization;

import java.io.Serializable;

public class Person implements Serializable {
    private static final long serialVersionUID = 1L;

    private int id;
    private String name;
    private int age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
Kaya sing kasebut, serialisasi mbantu ngowahi obyek dadi stream byte. Iki tegese kabeh informasi babagan obyek uga diowahi dadi stream byte, kayata metode, sifat lan data. Ing ngisor iki conto babagan carane obyek kasebut serialized:
package com.techteam.serialization;

import java.io.IOException;

public class SerializationMain {

    public static void main(String[] args) throws IOException {
        Person p = new Person();
        p.setId(1);
        p.setName("Tech team members");
        p.setAge(20);

        SerializeUtils.serialize(p, "/person.txt");
    }
}
Sawise proses serialisasi kita duwe file kanthi isi ing ngisor iki: Ngopi #180.  Variabel ing basa Jawa: apa iku lan carane digunakake.  5 Bab Sampeyan Kudu Ngerti Babagan Serialisasi lan Deserialisasi ing Jawa - 2

#2 Deserialisasi

Yen ing conto sadurunge, kita nggawe stream byte kanthi serialisasi obyek, saiki ayo ndeleng carane bali menyang obyek nggunakake deserialization:
package com.techteam.serialization;

import java.io.IOException;

public class DeserializationMain {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        Person p = SerializeUtils.deserialize("/person.txt");

        System.out.println("Person data:");
        System.out.println(p.getId());
        System.out.println(p.getName());
        System.out.println(p.getAge());
    }
}
Mangkene data sawise proses deserialization: Ngopi #180.  Variabel ing basa Jawa: apa iku lan carane digunakake.  5 Bab Sampeyan Kudu Ngerti Babagan Serialisasi lan Deserialisasi ing Jawa - 3

#3 Versi Serial UID

SerialVersionUID tegese nomer identifikasi unik kanggo saben versi proses serialisasi lan deseralisasi. Nomer iki digunakake kanggo mesthekake yen obyek serial lan deserialized nggunakake kelas kompatibel. Kanggo Person.java, aku kaya kanggo nambah serialVersionUID kanggo 2. Ayo kang katon ing output sawise deserializing file person.txt. Ngopi #180.  Variabel ing basa Jawa: apa iku lan carane digunakake.  5 Bab Sampeyan Kudu Ngerti Babagan Serialisasi lan Deserialisasi ing Jawa - 4

#4 Kata Kunci Transient

Sajrone proses serialisasi lan deseralisasi, kadhangkala kita ora perlu nggawe serialisasi kabeh informasi babagan obyek. Kanthi nggunakake proses transien kanggo variabel, kita bisa nglirwakake variabel kasebut saka obyek sing diserialisasi. Conto ing ngisor iki bakal mbantu ngerteni iki kanthi luwih jelas:
package com.techteam.serialization;

import java.io.IOException;
import java.io.Serializable;

public class PersonWithTransient implements Serializable {

    private static final long serialVersionUID = 1L;

    private int id;
    private String name;
    private transient int age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public static void main(String[] args) throws IOException, ClassNotFoundException {
        PersonWithTransient p = new PersonWithTransient();
        p.setId(2);
        p.setName("Tech team members(transient)");
        p.setAge(50);

        SerializeUtils.serialize(p, "/person_transient.txt");

        PersonWithTransient deserializeP = SerializeUtils.deserialize("/person_transient.txt");
        System.out.println("Person without transient data:");
        System.out.println(deserializeP.getId());
        System.out.println(deserializeP.getName());
        System.out.println(deserializeP.getAge());
    }
}
Ing kode ing ndhuwur, kita wis nggunakake tembung kunci transient kanggo variabel umur . Lan iki sing kita entuk sawise proses serialisasi lan deserialization.

# 5 Antarmuka Externalizable

Ing Jawa, nalika kita arep ngatur serialization lan proses deserialization, kita bisa nggunakake proses transisi kanggo nglirwakake variabel sing kita ora perlu kanggo serialization lan proses deserialization. Cara liya kanggo nyederhanakake lan nambah kinerja yaiku nggunakake antarmuka Externalizable tinimbang antarmuka Serializable . Ayo ndeleng conto:
package com.techteam.serialization;

import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;

public class PersonExternalizable implements Externalizable {
    private static final long serialVersionUID = 1L;
    private int id;
    private String name;
    private int age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public void writeExternal(ObjectOutput out) throws IOException {
        out.writeUTF(this.name);
        out.writeInt(this.age);
    }

    @Override
    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
        this.name = in.readUTF();
        this.age = in.readInt();
    }

    public static void main(String[] args) throws IOException, ClassNotFoundException {
        PersonExternalizable p = new PersonExternalizable();
        p.setId(3);
        p.setName("Tech team members(Externalizable)");
        p.setAge(30);

        SerializeUtils.externalSeialize(p, "/person_externalizable.txt");

        PersonExternalizable deserializeP = new PersonExternalizable();
        SerializeUtils.externalDeseialize(deserializeP, "/person_externalizable.txt");
        System.out.println("Person data:");
        System.out.println(deserializeP.getId());
        System.out.println(deserializeP.getName());
        System.out.println(deserializeP.getAge());
    }
}
Kaya sing sampeyan ngerteni, nalika nggunakake Externalizable , kita bisa kanthi gampang nulis logika khusus, nglirwakake variabel lan entuk kinerja sing luwih apik tinimbang nggunakake Serializable . Saiki ayo goleki output: Ngopi #180.  Variabel ing basa Jawa: apa iku lan carane digunakake.  5 Bab Sampeyan Kudu Ngerti Babagan Serialisasi lan Deserialisasi ing Jawa - 5

Kesimpulan

Muga-muga, liwat artikel iki, sampeyan wis entuk pangerten sing jelas babagan cara serialisasi lan deseralisasi ing Jawa, lan conto ing ndhuwur bisa mbantu sampeyan ing praktik ing mangsa ngarep.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION