1. 程式人生 > >基本資料型別的介紹及轉換,基本資料型別與字串之間轉換,字串與字元陣列之間轉換以及字串與位元組陣列之間轉換

基本資料型別的介紹及轉換,基本資料型別與字串之間轉換,字串與字元陣列之間轉換以及字串與位元組陣列之間轉換

目錄

  • 一.Java的基本資料型別介紹
  • 二.各類基本資料之間的轉換
  • 三.基本資料型別和String之間轉換(附:物件包裝類及所對應的基本資料型別)
  • 四.String與字元陣列轉換
  • 五.String與位元組陣列轉換

一.Java的基本資料型別介紹

型別 關鍵字 位數 預設值 取值範圍
位元組型 byte 8 0 -128~127
短整型 short 16 0 -32768~32767
整型 int 32 0 -2147483648~2147483647
長整型 long 64 0 -9223372036854775808~
9223372036854775807
單精度浮點型 float 32 0.0F -3.40282347E+38~3.40282347E+38
雙精度浮點型 double 64 0.0D -1.79769313486231570E+308~
1.79769313486231570E+308
字元型 char 16 '\u0000' '\u0000'~'\uFFFF'
布林型 boolean 8 false true,false

二.各類基本資料之間的轉換

1.自動轉換(它只能按優先關係將位數少的資料型別向位數多的資料型別轉換)

Byte、short、char → int → long → float → double

資料型別自動轉換規則(總結:小轉大,轉後即為大)

運算元1的資料型別 運算元2的資料型別 轉換後的資料型別
Byte、int int int
Byte、short、int long long
Byte、short、int、long float float
Byte、short、int、long、float double double
char int int

程式碼:(byte,short,char之間不會相互轉換,他們三者在計算時首先轉換為int型別)

public class practice {

    public static void main(String[] args) {
        char c = 'h';
        byte b = 6;
        int i = 100;
        long l = 567L;
        float f = 8.99f;// 單精度小數需用F或f為字尾
        double d = 4.7788;// 雙精度小數可用D、d或不加字尾表示

        int aa = c + i;// c自動轉換為int型別再運算
        long ll = l - aa;// aa自動轉換為long型別再運算
        float ff = b * f;// b自動轉換為float型別再運算
        double dd = ff / aa + d;// aa自動轉換為float型別運算,ff/aa得float結果後再自動轉換為double型別再進行運算

        System.out.println("aa=" + aa);
        System.out.println("ll=" + ll);
        System.out.println("ff=" + ff);
        System.out.println("dd=" + dd);
    }

}

結果:

2.強制轉換:將高階資料轉換成低階資料(其中的char型別與int型別轉換有些特殊)

格式:要求強制轉換的變數名前面用( )括上所要強制轉換的型別符

程式碼:

public class practice {

    public static void main(String[] args) {
        char c = 'h';
        byte b = 6;
        int i = 100;
        long l = 567L;
        float f = 8.99f;// 單精度小數需用F或f為字尾
        double d = 4.7788;// 雙精度小數可用D、d或不加字尾表示

        int ii=(int)l;//將long型的l強制轉換為int型的ii
        long ll=(long)f;//將float型的f強制轉換為long型的ll
        int cc=(int)c;//將char型的c強制轉換為int型的cc
        
        System.out.println("ii=" + ii);
        System.out.println("ll=" + ll);
        System.out.println("cc=" + cc);

    }

}

結果:

  • 【問題來了】:當char型數字想要轉換為int型或int型轉換為char型還用同樣方法可以嗎?答案是:NO!

若仍使用同樣方法則:當char型數字自動轉換為int型,其結果為char型數字的ASCII碼。

​ 當int型數字轉換為char型則得不出結果

public class practice {

    public static void main(String[] args) {
        char c = '8';
        int i = 9;
        int b1 = c;//將char型數字自動轉換為int型
        char cc1 = (char) i;//將int型數字強行轉換為char型
        System.out.println("b1=" + b1);//56,即8的ASCII碼
        System.out.println("cc1=" + cc1);//沒有結果
    }

}

結果:

解決方案:

  • 由char型數字轉int型,給字元減'0'即可

  • 由int型轉char型,給數字加'0'並強制轉換即可

public class practice {

    public static void main(String[] args) {
        char c = '8';
        int i = 9;

        int b = c - '0';//由char型轉int型,給字元減'0'即可
        char cc = (char) (i + '0');//由int型轉char型,給數字加'0'並強制轉換即可
        System.out.println("b=" + b);
        System.out.println("cc=" + cc);
    }

}

結果:

三.基本資料型別和String之間轉換(附:物件包裝類及所對應的基本資料型別)

物件包裝類 基本資料型別
Boolean boolean
Byte byte
Character char
Short short
Integer int
Long long
Float float
Double double

1.字串→基本資料型別(以字串→int型,float型為例)

  • 呼叫包裝類的 對應的包裝類.parsexxx 方法
  • 呼叫包裝類的 對應的包裝類.valueOf() 方法

類似地,由字串→其它基本資料型別之間轉換也可使用此方法。

例子:

public class practice {

    public static void main(String[] args) {
        String str = "12345678";
        int a = Integer.parseInt(str);//第一種方法
        int a1 = Integer.valueOf(str);//第二種方法
        float f = Float.parseFloat(str);//第一種方法
        float f1=Float.valueOf(str);//第二種方法
        System.out.println(a);//12345678
        System.out.println(a1);//12345678
        System.out.println(f);//1.2345678E7
        System.out.println(f1);//1.2345678E7
    }
}

結果:

2.基本資料型別→字串(以int型→字串為例)

  • 用一個空字串加上基本型別,得到的就是基本型別資料對應的字串
  • 使用String類的 String.valueOf() 方法
  • 使用包裝類的 對應的包裝類.toString() 方法

類似地,由其它基本資料型別→字串之間轉換也可使用此方法。

例子:

public class practice {

    public static void main(String[] args) {
        int a = 125;
        String str = " ";//方法一
        String str1 = a + str;//方法二
        String str2 = String.valueOf(a);//方法三
        String str3 = Integer.toString(a);
        System.out.println(str1);//125
        System.out.println(str2);//125
        System.out.println(str3);//125

    }
}

結果:

四.String與字元陣列轉換

1.字元陣列→字串

  • public static String valueOf(char[]) 用字元陣列中的全部字元建立字串物件。
  • public static valueOf String(char[],int offset,int count) 用字元陣列中的全部字元和部分字元建立字串物件。(注:data - 字元陣列。offset - String 的索引【字串索引從0開始】。count - String 值的長度。)
  • String(char[]) 用字元陣列中的全部字元建立字串物件。
  • String(char[],int offset,intlength) 用字元陣列中的部分字元建立字串物件。

例子:

public class practice {

    public static void main(String[] args) {
        char[] arr = { 'h', 'e', 'l', 'l', 'o' };
        String str = String.valueOf(arr);//第一種方法
        String str1=String.valueOf(arr, 0, 3);//第二種方法
        String str2 =new String(arr);//第三種方法
        String str3=new String(arr, 0, 3);//第四種方法
        System.out.println(str);//hello
        System.out.println(str1);//hel(其中不包含下標為3的字元)
        System.out.println(str2);//hello
        System.out.println(str3);//hel(其中不包含下標為3的字元)
    }
}

結果:

2.字串→字元陣列

  • public char[] toCharArray():將字串中的全部字元存放在一個字元陣列中的方法。
  • public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin):提供了將指定索引範圍內的字串存放到陣列中的方法

例子:

package Sort;

import java.util.Arrays;

public class practice {

    public static void main(String[] args) {
        char[ ] arr = new char[4];
        char[ ] arr1 = new char[3];
        String str = "hello";
        arr=str.toCharArray();
        str.getChars(0, 3, arr1, 0);//要複製的第一個字元位於索引 srcBegin 處; 要複製的最後一個字元位於索引 srcEnd-1 處(因此要複製的字元總數是srcEnd-srcBegin)。 要複製到 dst 子陣列的字元從索引 dstBegin 處開始,並結束於索引: dstbegin + (srcEnd-srcBegin) - 1
        System.out.println(Arrays.toString(arr));//[h, e, l, l, o]
        System.out.println(Arrays.toString(arr1));//[h, e, l]
    }
}

結果:

五.String與位元組陣列轉換

1.位元組陣列→字串

  • String(byte[]):通過使用平臺的預設字符集解碼指定的 byte 陣列,構造一個新的 String。
  • String(byte[],int offset,int length) :用指定的位元組陣列的一部分,即從陣列起始位置offset開始取length個位元組構造一個字串物件。

例子:

package Sort;

import java.util.Arrays;

public class practice {

    public static void main(String[] args) {
        byte[] arr = { 'h', 'e', 'l', 'l', 'o' };
        String str1=new String(arr);//第一種方法
        String str2=new String(arr, 0, 3);//第二種方法
        System.out.println(str1);//hello
        System.out.println(str2);//hel(其中不包含下標為3的字元)
    }
}

2.字串→位元組陣列

  • public byte[] getBytes() :使用平臺的預設字符集將此 String 編碼為byte 序列,並將結果儲存到一個新的 byte 陣列中。
  • public byte[] getBytes(String charsetName) :使用指定的字符集將此 String 編碼到 byte 序列,並將結果儲存到新的 byte 陣列。注:charsetName為編碼字符集

例子:

package Sort;

import java.io.UnsupportedEncodingException;
import java.util.Arrays;

public class practice {

    public static void main(String[] args) throws UnsupportedEncodingException {
        byte[] arr = new byte[4];
        byte[] arr1 = new byte[4];
        String str = "hello";
        arr = str.getBytes();//第一種方法
        arr1 = str.getBytes("UTF-8");//第二種方法
        System.out.println(Arrays.toString(arr));// [104, 101, 108, 108, 111]
        System.out.println(Arrays.toString(arr1));// [104, 101, 108, 108, 111]
    }
}

結果:

到此我們各種型別的轉換就全部寫完啦~

如果你覺得這篇文章還不錯,麻煩幫我點個贊!可以讓更多人看到這篇文章。讓我有動力繼續更技術文~

關注小喬的公眾號【小喬的程式設計內容分享站】,更多的Java資源乾貨等你來學哦~

相關推薦

【Unity3D入門教程】Unity3D介面介紹遊戲物件基本操作

1 介面介紹 在Windows等圖形化作業系統上,熟練地使用選單、圖示、快捷鍵等,將會極大提升工作效率。因此,要認識一個軟體,學會熟練使用他們,就必須先認識軟體的介面。 先點選選單欄的Window——

SQL2000系統表、儲存過程、函式的功能介紹及應用2009年01月21日 星期三 11:38雖然使用系統儲存過程、系統函式資訊架構檢視已經可以為我們提供了相當豐富的元資料資訊但是對於某些特殊的元資料資訊我們仍然需要直接對系統表進行查詢。因為SQL

雖然使用系統儲存過程、系統函式與資訊架構檢視已經可以為我們提供了相當豐富的元資料資訊,但是對於某些特殊的元資料資訊,我們仍然需要直接對系統表進行查詢。因為SQL Server 將所有資料庫物件的資訊均存放在系統表中,作為 SQL Server 的管理、開發人員,瞭解各個系統表的作用將有助於我們瞭解 SQL

C#資料快取介紹Caching通用幫助類整理

C#快取主要是為了提高資料的讀取速度。因為伺服器和應用客戶端之間存在著流量的瓶頸,所以讀取大容量資料時,使用快取來直接為客戶端服務,可以減少客戶端與伺服器端的資料互動,從而大大提高程式的效能。 以下為工作中經常用到的快取操作公用類庫整理: using System; usi

MySQL資料檔案介紹存放位置

MySQL的每個資料庫都對應存放在一個與資料庫同名的資料夾中,MySQL資料庫檔案包括MySQL(server)所建資料庫檔案和MySQL(server)所用儲存引擎建立的資料庫檔案。 1、MySQL(server)建立並管理的資料庫檔案: .frm檔案:儲存資料表的框架結構,檔名與表名相同,每個表對應一個

使用python進行資料分析介紹部分教程

Python是一種面向物件、直譯式計算機程式設計語言,由Guido van Rossum於1989年底發明。由於他簡單、易學、免費開源、可移植性、可擴充套件性等特點,Python又被稱之為膠水語言。下圖為主要程式語言近年來的流行趨勢,Python受歡迎程度扶搖直上。 圖片

文章標題 ImageNet 資料介紹應用

下載完成後,解壓檔案,生成相應的資料集資料夾, 後續,根據自己的目錄修改create_imagenet.sh, 再caffe根目錄下執行即可。 2.Ubuntu14.04LTS 利用anaconda2 安裝好後,在.bashrc 配置了路徑後,執行Vi

MS coco資料介紹下載

登入ms-co-co資料集官網,一直不能進入,翻牆之後開看到下載連結。有了下載連結下載還是很快的,在我這兒晚上下載,速度能達到7M/s,所以也不上傳到網盤了,有需要的人等夜深人靜的時候下載效果更佳哦。 我把2017的資料集下載連結貼上來,linux下w

c# 自動實現屬性 隱式型別 物件集合初始化 匿名型別

Demo  using System; using System.Collections.Generic; namespace IntelligentCompiling { class Program { static void Main(str

C++列舉型別EnumC++11強列舉型別用法

列舉常常和switch配合使用,用一個程式碼片段來說明: //W A S D 前、後、左、右行走\nQ E 左、右轉頭\nF 復位\nG H 暫停、繼續、重播例項\nY 停止例項\nB 刪除例項\nSPACE 刪除所有例項 enum Keydown{ Forward='w', Back

Tensorflow資料讀取機制tfrecords高效讀取資料

1. tensorflow 的資料讀取機制 以影象資料為例,資料讀取過程如下所示:       假設我們的硬碟中有一個圖片資料集0001.jpg,0002.jpg,0003.jpg……我們只需要把它們讀取到記憶體中,然後提供給GPU或是CPU進行計算就

資料分析介紹之七——單變數資料觀察之彙總統計和箱線圖

模組提供了高效、便捷的numpy Python大數值陣列的處理。它的前身是無論是早前的數字和替代Numarray模組。(見附錄A中更多的科學計算與Python。史)的NumPy模組使用的許多其他的庫和專案,在這個意義上是一個“基地”技術。 讓我們在鑽研深入技術

資料分析介紹之六——單變數資料觀察之彙總統計和箱線圖

你可能已經注意到,到目前為止我還沒有在所有關於平均數和中位數、標準差等簡單的主題發言,和百分位數。那是很有意的。這些彙總統計僅適用於某些假設,如果這些假設未實現,則是誤導性的,如果不是完全錯誤的話。我知道這些量是容易理解和容易計算的,但是如果有一條資訊我想讓你從

字串陣列的分割 以及 字串陣列的相互轉換

一、將 $str="Hi I'm dutian"; 以空格分割,並放到陣列中$str = "Hi I'm dutian"; $arr = explode(" ",$str); print_R($arr); 二、將 $arr = array("Hi I'm dutian"); 

基本資料型別介紹轉換基本資料型別字串之間轉換字串字元陣列之間轉換以及字串位元組陣列之間轉換

目錄 一.Java的基本資料型別介紹 二.各類基本資料之間的轉換 三.基本資料型別和String之間轉換(附:物件包裝類及所對應的基本資料型別) 四.String與字元陣列轉換 五.Strin

java基礎複習第二天——基本資料型別引用資料型別資料型別轉換運算子

目錄 1.基本資料型別(4類八種) 2.引用資料型別 3.基本型別和引用型別的區別 4.資料型別轉換 5.運算子 ----------------------------------------------------------------------我是分割線--

JS基礎知識(一)【資料型別基本介紹檢測資料型別端方法簡介】

1、基礎知識 ECMAScript(ES):規定了JS的一些基礎核心的知識(變數、資料型別、語法規範、操作語句等)  DOM:document object model 文件物件模型,裡面提供了一些屬性和方法,可以讓我們操作頁面中的元素  BOM:browser ob

Python資料分析挖掘第一篇—基本介紹環境搭建

一,資料分析與挖掘簡介   所謂資料分析,是對已有的資料進行分析,提取一些有價值的資訊,比如平均數,標準差等。而資料探勘,是對大量的資訊進行分析和挖掘,得到一些未知的,有價值的資訊。如今日頭條類的新聞推送就是通過對使用者的資訊進行分析和挖掘,從而達到精準推送使用者感興趣的新聞。資料分析和資料探勘往往是密不可

【大資料技術】HBase基本知識介紹典型案例分析

  (1)分散式、多版本、面向列的開源資料庫      (2)支援上億行、百萬列;   (3)強一致性、高擴充套件、高可用 Hbase是一個強一致性資料庫,不是“最終一致性”資料庫。 HBase資料讀寫,更新的資料是放在Mems

java之--把jython得到的基本資料型別轉換成Java資料型別

今天,給大家介紹下如何在java用jython的方法得到Python資料並把它轉換為java下資料型別.下面我們進入正題: 我們使用的jython的jar包版本為2.70,然後在引入jar包jythonutils1.0 例如下面是之前只用jython2.70常用方法:imp

BigDecimal資料型別(初始化加減乘除基本操作)

BigDecimal為大資料型別,更精準的計算 1.初始化 1.1 字串做引數 BigDecimal a =new BigDecimal(“1.22”); doublevalue:1.21999999999999997335464740899