Ép Kiểu Trong Java (Type Casting) - VietMX's Blog

Table of Contents

  • Ép kiểu là gì?
  • Nới rộng (widening)
  • Thu hẹp (narrowwing)
  • Bảng mô tả ép kiểu trong Java

Ép kiểu là gì?

Ép kiểu là việc gán giá trị của một biến có kiểu dữ liệu này sang biến khác có kiểu dữ liệu khác.

Ví dụ:

float soLe = 19.7f; int soNguyen = (int)soLe + 1;

Trong ví dụ trên, giá trị soLe được đổi thành giá trị nguyên 19. Sau đó, nó được cộng với 1 và kết quả là giá trị 20 được lưu vào soNguyen .

Trong Java, có hai loại ép kiểu dữ liệu:

Nới rộng (widening)

Nới rộng (widening): Là quá trình làm tròn số từ kiểu dữ liệu có kích thước nhỏ hơn sang kiểu có kích thước lớn hơn. Kiểu biến đổi này không làm mất thông tin. Ví dụ chuyển từ int sang float. Chuyển kiểu loại này có thế được thực hiện ngầm định bởi trình biên dịch.

byte -> short -> int -> long -> float -> double

public class TestWidening { public static void main(String[] args) { int i = 100; long l = i; // không yêu cầu chỉ định ép kiểu float f = l; // không yêu cầu chỉ định ép kiểu System.out.println("Giá trị Int: " + i); // Giá trị Int: 100 System.out.println("Giá trị Long: " + l); // Giá trị Long: 100 System.out.println("Giá trị Float: " + f); // Giá trị Float: 100.0 } }

Thu hẹp (narrowwing)

Thu hẹp (narrowwing): Là quá trình làm tròn số từ kiểu dữ liệu có kích thước lớn hơn sang kiểu có kích thước nhỏ hơn. Kiểu biến đổi này có thể làm mất thông tin như ví dụ ở trên. Chuyển kiểu loại này không thể thực hiện ngầm định bởi trình biên dịch, người dùng phải thực hiện chuyển kiểu tường minh.

double -> float -> long -> int -> short -> byte

public class TestNarrowwing { public static void main(String[] args) { double d = 100.04; long l = (long) d; // yêu cầu chỉ định kiểu dữ liệu (long) int i = (int) l; // yêu cầu chỉ định kiểu dữ liệu (int) System.out.println("Giá trị Double: " + d); System.out.println("Giá trị Long: " + l); System.out.println("Giá trị Int: " + i); } }

Bảng mô tả ép kiểu trong Java

Ép kiểuChuyển sang kiểu
Từ kiểubooleanbyteshortcharint longfloatdouble
booleanNoNoNoNoNoNoNo
byteNoYesCastYesYesYesYes
shortNoCastCastYesYesYesYes
charNoCastCastYesYesYesYes
int NoCastCastCastYesYesYes
longNoCastCastCastCastYesYes
floatNoCastCastCastCastCastYes
doubleNoCastCastCastCastCastCast

Trong đó

  • -: chính nó
  • No: không ép kiểu được
  • Yes: thực hiện ép kiểu nới rộng (widening)
  • Cast: thực hiện ép kiểu thu hẹp (narrowwing)

Related posts:

Spring Data MongoDB TransactionsSpring Data Java 8 SupportJava Program to Find MST (Minimum Spanning Tree) using Prim’s AlgorithmSpring MVC + Thymeleaf 3.0: New FeaturesJava Program to Implement Singly Linked ListJava Program to Find kth Smallest Element by the Method of Partitioning the ArrayThe Difference Between Collection.stream().forEach() and Collection.forEach()Java Program to Implement Regular Falsi AlgorithmJava Program to implement Bit MatrixHashing a Password in JavaConverting String to Stream of charsJava Program to Perform Optimal Paranthesization Using Dynamic ProgrammingAn Example of Load Balancing with Zuul and EurekaGuide to @JsonFormat in JacksonSo sánh HashMap và HashSet trong JavaOAuth2 for a Spring REST API – Handle the Refresh Token in AngularJSJava Program to Implement Fermat Primality Test AlgorithmSpring Security 5 – OAuth2 LoginJava – Generate Random StringJava Program to Implement the Hill CypherJava Program to Check Whether an Undirected Graph Contains a Eulerian PathConvert char to String in JavaHttpClient 4 CookbookIntroduction to Spring Cloud Netflix – EurekaJava Program to Implement the Hungarian Algorithm for Bipartite MatchingSpring AMQP in Reactive ApplicationsLập trình đa luồng với CompletableFuture trong Java 8Testing an OAuth Secured API with Spring MVCJava Program to Implement Gift Wrapping Algorithm in Two DimensionsSpring Boot - Tomcat DeploymentUsing the Map.Entry Java ClassThe Spring @Controller and @RestController Annotations

Từ khóa » ép Kiểu Trong Java