VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test

Java Cơ Bản

Java là gì? Lịch sử Java Các tính năng của Java Cài đặt môi trường Java (cho người mới bắt đầu) Thiết lập PATH cho java Chương trình Hello World JDK, JRE và JVM Biến trong java Các kiểu dữ liệu trong java Ép kiểu (Type casting) Các toán tử trong Java Hệ thống Unicode trong java

Câu Lệnh Điều Khiển

Mệnh đề If-else Mệnh đề Switch-case Vòng lặp For Vòng lặp While Vòng lặp Do-While Break trong java Continue trong java Chương trình java kinh điển

Các Tính Chất Của Java OOPs

Tính đóng gói trong java Tính kế thừa trong java Tính đa hình trong java Nạp chồng phương thức Ghi đè phương thức Overloading vs Overriding

Các Khái Niệm Java OOPs

Tổng quan java OOPs Lớp và đối tượng Package trong java Constructor trong java Từ khóa this trong java Từ khóa super trong java Từ khóa final trong java Từ khóa static trong java Access Modifier trong java Abstract class trong java Interface trong java Abstract vs Interface trong java Lớp Object trong java Object Cloning trong java equals() và hashCode() Array (mảng) trong java Khai báo mảng trong java Duyệt mảng trong java Lớp Wrapper trong java Đệ quy trong java Truyền giá trị và tham chiếu trong java Toán tử instanceof trong java Sử dụng regex trong java

Mô Hình MVC

Mô hình MVC là gì? - Ví dụ login sử dụng mô hình MVC trong Java

Java Programs

Tính giai thừa trong java Check số nguyên tố trong java Dãy số Fibonacci trong java Chuyển đổi hệ cơ số trong java Liệt kê n số nguyên tố đầu tiên trong Java
Java String Xử Lý Ngoại Lệ Các Lớp Lồng Nhau Đa Luồng (Multithreading) Java AWT Java Swing Java I/O Ví Dụ Java I/O Lập Trình Mạng Với Java Java Date Chuyển Đối Kiểu Dữ Liệu Java Collections Java JDBC Các Tính Năng Mới Trong Java Java Math Bài Tập Java Có Lời Giải Câu Hỏi Phỏng Vấn Java
1 / 3
❮ ❯

Toán tử instanceof trong java


Truyền giá trị và tham chiếu trong java
Array (mảng) trong java

Nội dung chính

  • Toán tử instanceof trong java
  • instanceof trong java với biến có giá trị null
  • Downcasting với toán tử instanceof trong java

Toán tử instanceof trong java

Toán tử instanceof trong java được sử dụng để kiểm tra một đối tượng có phải là thể hiển của một kiểu dữ liệu cụ thể không (lớp, lớp con, interface).

instanceof trong java được gọi là toán tử so sánh kiểu vì nó so sánh thể hiện với kiểu dữ liệu. Nó trả về giá trị boolean là true hoặc false. Nếu bạn dùng toán tử instanceof với bất kỳ biến nào mà có giá trị null, giá trị trả về sẽ là false.

Ví dụ về toán tử instanceof trong java

public class Simple1 {
 public static void main(String args[]) {
  Simple1 s = new Simple1();
  System.out.println(s instanceof Simple1);// true
 }
}

Output:

true

Một đối tượng có kiểu của lớp con thì cũng có kiểu của lớp cha. Ví dụ, nếu Dog kế thừa Animal thì đối tượng của Dog có thể tham chiếu đến cả hai lớp Dog và Animal.

Ví dụ khác về toán tử instanceof trong java

class Animal {}

public class Dog extends Animal {// Dog inherits Animal

 public static void main(String args[]) {
  Dog dog = new Dog();
  System.out.println(dog instanceof Animal);// true
 }
}

Output:

true

instanceof trong java với biến có giá trị null

Nếu bạn sử dụng toán tử instanceof với biến có kiểu bất kỳ có giá trị null thì giá trị trả về luôn là null. Ví dụ.

public class Dog2 {
 public static void main(String args[]) {
  Dog2 d = null;
  System.out.println(d instanceof Dog2);// false
 }
}

Output:

false

Downcasting với toán tử instanceof trong java

Khi kiểu của lớp con tham chiếu tới đối tượng của lớp cha được gọi là downcasting. Nếu bạn thực hiện tham chiếu trực tiếp thì trình biên dịch sẽ báo lỗi biên dịch. Nếu bạn thực hiện bằng việc ép kiểu thì lỗi ngoại lệ ClassCastException được ném ra lúc runtime. Nhưng nếu bạn sử dụng toán tử instanceof thì downcasting được.

Tham chiếu trực tiếp:

Dog d=new Animal();//Compilation error  

Sử dụng ép kiểu dữ liệu:

Dog d=(Dog)new Animal(); 
// Compile ok, nhưng lỗi ngoại lệ ClassCastException lúc runtime

Ví dụ downcasting với instanceof

class Animal {}

public class Dog3 extends Animal {
 static void method(Animal a) {
  if (a instanceof Dog3) {
   Dog3 d = (Dog3) a;// downcasting
   System.out.println("downcasting is ok");
  }
 }

 public static void main(String[] args) {
  Animal a = new Dog3();
  Dog3.method(a);
 }
}

Output:

downcasting is ok

Ví dụ downcasting không sử dụng instanceof

class Animal {}

public class Dog4 extends Animal {
 static void method(Animal a) {
  Dog4 d = (Dog4) a;// downcasting
  System.out.println("downcasting is ok");
 }

 public static void main(String[] args) {
  Animal a = new Dog4();
  Dog4.method(a);
 }
}

Output:

downcasting is ok

Hãy đi sâu vào vấn đề gần hơn chút, thực tế đối tượng được tham chiếu bởi biến a là một đối tượng của lớp Dog4. Vì vậy chúng ta thực hiện downcasting nó thì ok. Nhưng nếu code như sau thì chuyện gì sẽ xảy ra?

Animal a=new Animal();  
Dog.method(a);  
// lỗi ngoại lệ ClassCastException

Ví dụ sử dụng toán tử instanceof để xác định kiểu phần tử của mảng

public class Test6 {
 public static void main(String[] args) {
  Object[] objArray = new Object[4];
  objArray[0] = "hello";
  objArray[1] = 1000L;
  objArray[2] = 20;
  objArray[3] = 'c';

  for (int i = 0; i < objArray.length; i++) {
   if (objArray[i] instanceof Integer) {
    System.out.println("kieu integer: " + objArray[i]);
   } else if (objArray[i] instanceof Long) {
    System.out.println("kieu long: " + objArray[i]);
   } else if (objArray[i] instanceof Character) {
    System.out.println("kieu char: " + objArray[i]);
   } else {
    System.out.println("kieu khac: " + objArray[i]);
   }
  }
 }
}

Output:

kieu khac: hello
kieu long: 1000
kieu integer: 20
kieu char: c

Truyền giá trị và tham chiếu trong java
Array (mảng) trong java

Recent Updates

Sắp Tết 2024 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2024?Java Swing - Bài tập quản lý sinh viên trong javaLinkedList trong javaArrayList trong javaBài tập java có lời giảiSử dụng Javascript trong HTMLToán tử dấu 2 chấm (::) trong Java 8Lambda Expression - Biểu thức Lambda trong java 8Bài tập Java - Sắp xếp nhanh (Quick Sort) trong JavaBài tập Java - Sắp xếp chèn (Insertion Sort) trong JavaBài tập Java - Sắp xếp nổi bọt (Bubble Sort) trong JavaBài tập quản lý sinh viên trong JavaHashSet trong java

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml