《Java基础:各种类型转换(共8种)》

一、想对你说

(1)之前一直有小伙伴让我总结下Java相关的知识点,这里我针对有一定Java基础的同学做了一个系列的总结,感兴趣的同学可以看看顶部的【Java专栏】希望对大家有所帮助。

(2)要是对您有所帮助的话,可以给 “大大大钢琴” 点个赞,这是我继续下去的动力,谢谢大家了!废话不多说了,直接上干货。

二、类型转换

1、Java的基本数据类型包括八种

整数类型(byte,short,int long)、浮点数类型(double,float)

布尔类型(boolean)、字符类型(char)

2、类型从小到大依次为:

byte、short、int、long、float、double、(char)

3、自动(隐式)类型转换:从小类型到大类型,不需要强制转换符

int a = 5 ; doubule b =a ;

4、强制类型转换:从大类型到小类型,需要强制转换符实现强制转换

doubule a = 5.123 ; int b = (int) a ;
5、关于byte、short、char赋值与运算的强转规则:

(1)不参与运算,整数直接量可以直接赋值给byte,short,char,不需要强转。

(2) byte,short,char型变量参与运算时,需要强转

byte b1 =5; byte b2 =2; byte b3 =(byte)(b1 + b2 );

(一)Booleen和String互相转换


public class test_demo {
    public static void main(String[] args) {

        //*********布尔值(booleen)  转  字符串(string)************

        //方法1:String.valueOf()方法将布尔值转换为String
        boolean b1=true;
        String s1=String.valueOf(b1);
        System.out.println("bool转string:"+s1);
        System.out.println("数据类型:"+s1.getClass());

        //方法2:Boolean.toString()方法将布尔值转换为String
        boolean b2=false;
        String s2=Boolean.toString(b2);
        System.out.println("bool转string:"+s2);
        System.out.println("数据类型:"+s2.getClass());

        //*********布尔值(booleen)  转  字符串(string)************
        //注意:"true" 或 "TRUE" 将返回布尔值true。除“"true"以外的任何其他字符串值都返回布尔值false。
        //方法1:Boolean.parseBoolean
        String s1="true";
        String s2="TRue";
        String s3="ok";
        boolean b1=Boolean.parseBoolean(s1);
        boolean b2=Boolean.parseBoolean(s2);
        boolean b3=Boolean.parseBoolean(s3);
        System.out.println(b1);//true
        System.out.println(b2);//true
        System.out.println(b3);//false

        //方法1:Boolean.valueOf
        Boolean bb1=Boolean.valueOf(s1);
        Boolean bb2=Boolean.valueOf(s2);
        Boolean bb3=Boolean.valueOf(s3);
        System.out.println(bb1);//true
        System.out.println(bb2);//true
        System.out.println(bb3);//false
    }
}

(二)Int和String互相转换

1、int转string

(1)使用num + ""、(2)使用String.valueOf(num)方法、(3)使用Integer.toString(num)方法

2、string转int

(1)Integer.parseInt(String)、(2) Integer.valueOf(String)方法

差异:valueOf(String)方法会返回Integer类的对象,而parseInt(String)方法返回原始的int值

public class test_demo {
    public static void main(String[] args) {

        //*********布尔值(int) 转  字符串(string)互相转换************
        int num = 100;
        String str1 = num + ""; //方法1:
        String str2 = String.valueOf(num); //方法2:
        String str3 = Integer.toString(num);
        System.out.println("int转string: " + str1);

        
        //*********字符串(string)  转  布尔值(int)互相转换************
        String str = "123";
        int inum = 100;
        int inum1 = Integer.parseInt(str);//方法1:使用parseInt()方法
        int inum2 = Integer.valueOf(str);//方法2inum1
        int sum = inum + inum1 + inum2;
        System.out.println("string转int: " + sum);
    }
}

(三)Float和String互相转换

public class test_demo {
    public static void main(String[] args) {

        //*********浮点型(float)  转  字符串(string)************
        float a = 3.1415f;
        //Float.toString
        String result = Float.toString(a);
        System.out.println("结果" + result);
        System.out.println("数据类型" + result.getClass());

        
        //*********字符串(string)  转  浮点型(flot)************
        String s="23.6";
        float f=Float.parseFloat("23.6");
        System.out.println("结果:" + f);
    }
}

(四)数组[] 和 集合{} 互相转换

注意:查看数组和集合之间的区别

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class test_demo {
    public static void main(String[] args) {

        //*********数组 转 集合************
        int[] arr = {1, 3, 4, 6, 6};//集合为{}、数字[]
        Arrays.asList(arr);//Arrays.asList(数组)
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }

        //*********集合 转 数组************
        List list = new ArrayList();
        list.add("a");
        list.add("b");
        list.toArray();
        System.out.println("集合转数组:"+list.toString());

        //注意:定义数组类型的时候定义为父类,而存进数组为父类的子类
        father[] fathers = new father[2];
        fathers[0] = new son();
        fathers[1] = new son2();
        System.out.println("定义类:"+fathers.toString());

      /*相同:数组和集合都是java中的容器。
        区别:
        1、数组特点:
        (1)大小固定,只能存储相同数据类型的数据
        (2)数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了,而且生命周期也是不能改变的,还有数组会做边界检查
        (3)数组声明了它容纳的元素的类型,而集合不声明。
        (4)数组的存放的类型只能是一种,Object数组可以存多种类型;
        (5)数组是java语言中内置的数据类型,是线性排列的数组,所有可以快速访问其他的元素。
        2、集合特点:
        (1)大小可动态扩展,可以存储各种类型的数据
        (2)而集合的长度是可变的,可以动态扩展容量,可以根据需要动态改变大小,集合提供更多的成员方法,能满足更多的需求。
        (3)集合存放的类型可以不是一种,只可以存储对象,也可以存储基本数据类型,但必须是基本类型的包装类(不加泛型时添加的类型是Object)。
        (4)集合可以存放不同类型的引用类型,因为存入集合的元素都被转化成了Object类型,之后再引用集合中的类型需要强制类型转换,这就导致了集合的类型不安全,以及类型转化的性能损耗*/
    }

    public static class father {
        int i = 0;
    }

    public static class son extends father {
        int x = 0;
    }

    public static class son2 extends father {
        int y = 0;
    }
}

(五)json转map(6种)

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import java.util.Map;

public class test_demo {
    public static void main(String[] args) {
        //前端传给我们的往往是json串,那我们如何转化为map或者map数组呢?废话少说,上代码:
        String str = "{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}";

        //第一种方式:(Map)JSON.parse
        Map maps = (Map)JSON.parse(str);
        System.out.println("第一种方式:用JSON类来解析JSON字符串");
        for (Object map : maps.entrySet()){
            Object key =((Map.Entry)map).getKey();
            Object value =((Map.Entry)map).getValue();
            System.out.println(key+" : " +value);
        }

        //第二种方式:JSONObject是Map接口的一个实现类
        Map json = (Map) JSONObject.parse(str);
        System.out.println("\n第二种方式:用JSONObject类的parse方法来解析JSON字符串");
        for (Object map : json.entrySet()){
            Object key =((Map.Entry)map).getKey();
            Object value =((Map.Entry)map).getValue();
            System.out.println(key+" : " +value);
        }

        //第三种方式:JSON.parseObject
        Map mapType1 = JSON.parseObject(str);
        System.out.println("\n第三种方式:用JSON类的parseObject来解析JSON字符串");
        for (Object obj : mapType1.keySet()){
            System.out.println(obj+" : " +mapType1.get(obj));
        }

        //第四种方式:JSON.parseObject(json, map.class)
        Map mapType2 = JSON.parseObject(str,Map.class);
        System.out.println("\n第四种方式:用JSON类,指定解析类型,来解析JSON字符串");
        for (Object obj : mapType2.keySet()){
            System.out.println(obj+" : " +mapType1.get(obj));
        }

        //第五种方式:JSONObject是Map接口的一个实现类
        Map mapType3 = JSONObject.parseObject(str,Map.class);
        System.out.println("\n第五种方式:用JSONObject的parseObject方法并执行返回类型来解析JSON字符串");
        for (Object object: mapType3.entrySet()){
            Object key =((Map.Entry)object).getKey();
            Object value =((Map.Entry)object).getValue();
            System.out.println(key+" : " +value);
        }

        //第六种方式: JSONObject是Map接口的一个实现类
        JSONObject jsonObject = JSONObject.parseObject(str);
        System.out.println("\n第六种方式:用JSONObject的parseObject方法来解析JSON字符串!!!");
        for (Object object : jsonObject.entrySet()){
            Object key =((Map.Entry)object).getKey();
            Object value =((Map.Entry)object).getValue();
            System.out.println(key+" : " +value);
        }

        System.out.println(json);
    }
}

(六)json转map 和 json转list

import com.alibaba.fastjson.JSONObject;
import java.util.List;
import java.util.Map;

public class test_demo {
    public static void main(String[] args) {
        //json首先是转map(“006-json转map(6种)”:上有6种转换方法,这里只取其中一个)
        String json1 = "{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}";
        Map map= JSONObject.parseObject(json1);
        System.out.println(map);

        //jsonb转map数组
        String json2 = "[{\"0\":\"zhangsan\"}]";
        List<Map> mapList = JSONObject.parseArray(json2, Map.class);
        for(Map map1 : mapList){
            System.out.println(map1);
        }
    }
}

(七)JSONArray 转换 string

在 Java 中,可以使用 JSON 库(如 org.json 或 Jackson)将 JSONArray 转换为字符串。以下是一个使用 org.json 库的示例

import com.alibaba.fastjson.JSONObject;
import org.json.JSONArray;

public class test_demo {
    public static void main(String[] args) {

        //创建JSONObject对象
        JSONObject json = new JSONObject();
        //向json中添加数据
        json.put("username", "大大大钢琴");
        json.put("age", 24);
        //创建JSONArray数组,并将json添加到数组
        JSONArray array = new JSONArray();
        array.put(json);

        //转换为字符串
        String jsonStr = array.toString();
        System.out.println(jsonStr);
    }
}

(八)JSONObject转换string方法实例

在 Java 中,可以使用 JSON 库(如 org.json 或 Jackson)将 JSONObject 转换为字符串。以下是一个使用 org.json 库的示例:

import org.json.JSONObject;

public class JSONObjectToStringExample {
    public static void main(String[] args) {
        // 创建一个 JSONObject
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("name", "John");
        jsonObject.put("age", 30);
        jsonObject.put("city", "New York");

        // 将 JSONObject 转换为字符串
        String jsonString = jsonObject.toString();

        // 输出转换后的字符串
        System.out.println(jsonString);
    }
}

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
自动类型转换,也称隐式类型转换,是指不需要书写代码,由系统自动完成的类型转换。由于实际开发中这样的类型转换很多,所以Java语言在设计时,没有为该操作设计语法,而是由JVM自动完成。 转换规则 从存储范围小的类型到存储范围大的类型。 具体规则为: byte→short(char)→int→long→float→double 也就是说byte类型的变量可以自动转换为short类型,示例代码: byte b = 10; short sh = b; 这里在赋值时,JVM首先将b的值转换为short类型,然后再赋值给sh。 在类型转换时可以跳跃。示例代码: byte b1 = 100; int n = b1; l 注意问题 在整数之间进行类型转换时,数值不发生改变,而,特将整数类型别是比较大的整数类型转换成小数类型时,由于存储方式不同,有可能存在数据精度的损失。 强制类型转换,也称显式类型转换,是指必须书写代码才能完成的类型转换。该类类型转换很可能存在精度的损失,所以必须书写相应的代码,并且能够忍受该损失时才进行该类型转换转换规则 从存储范围大的类型到存储范围小的类型。 具体规则为: double→float→long→int→short(char)→byte 语法格式为: (转换到的类型)需要转换的值 示例代码: double d = 3.10; int n = (int)d; 这里将double类型的变量d强制转换成int类型,然后赋值给变量n。需要说明的是小数强制转换为整数,采用的是“去1法”,也就是无条件的舍弃小数点的所有数字,则以上转换出的结果是3。整数强制转换为整数时取数字的低位,例如int类型的变量转换为byte类型时,则只去int类型的低8位(也就是最后一个字节)的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大大大钢琴

喜欢!就请他吃3块钱好吃的吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值