【Java数据类型】各种数据类型的相互转换总结

JS逆向实战 - 数美滑块验证码的协议破解与自动化对抗 本文深入解析了数美滑块验证码的协议破解与自动化对抗技术。通过JS逆向分析,揭示了数美验证码的动态密钥体系和加密参数生成逻辑,并提供了Python实现的协议请求模块和轨迹模拟算法,有效提升验证通过率至89%。文章还探讨了应对版本迭代与环境检测的实战策略。 阅读详情

基础数据类型包括:byte、short、int、long、float、double、char、String、boolean,在许多场合需要用到它们的相互转换。本文,将介绍几种转换方式,以及对转换方式的原理简要介绍。

法则与特性

数据类型转换必须满足如下规则:

  1. 不能对boolean类型进行类型转换。
  2. 不能把对象类型转换成不相关类的对象。

特性:

  1. 在把容量大的类型转换为容量小的类型时,必须使用强制类型转换。
  2. 转换过程中可能导致溢出或损失精度,高级向低级转换;
  3. char与int之间的不转换,参与运算的都是int

数据类型转换的方式:

  1. 级别从低到高为:byte, char, short(这三个平级)–>int–>float–>long–>double;

    注意:byte, short, char相互之间不转换,他们参与运算首先转换为int类型

  2. 自动类型转换:从低级别到高级别,系统自动转的;
  3. 强制类型转换:什么情况下使用? 把一个高级别的数赋给一个比该数的级别低的变量;

    格式:目标类型 变量名=(目标类型)(被转换的数据);

字节(byte)相关转换

byte特性:

  • byte能表示的数的范围是:[-128, +127]
  • byte[]只能用于保存范围在[-128,+127]之间的数字,常用于字节流时做缓冲数组;

你可能会问: 为毛最大值和最小值的绝对值不一样?
解答: 8位的byte,最高位是符号位;于是最大值的二进制位是0111 1111,十进制为127;最小值就是上面的二进制位取反,符号位是1,于是最小值的二进制位是1000 0000,十进制为-128;

获取byte基础信息:

System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);  
System.out.println("包装类:java.lang.Byte");  
System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);  //获取Byte的最大值:127
System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);  //获取Byte的最小值:-128

byte数组赋值:

// byte数组赋值
byte[] b = new byte[10]; //一个字节(byte) = 一个char
for(int i=0;i<b.length;i++) {
	b[i]=(byte)(65+i); //字节数组的赋值,赋值的范围[-127,+127]
}

byte数组的输出:

//byte数组的输出
for(int i=0;i<b.length;i++) {
	System.out.println((char)b[i]); //将ASCII码转换为字符输出;
	System.out.println(b[i]); //直接输出,则输出该byte数组元素的ASCII码;
}

byte(字节)数组、String、Char的相互转换:

char[] ch = new char[3];
ch[0]='a';
ch[1]='b';
ch[2]='c';
String str = new String(ch); //char[]转String;

//char[]转byte[]:char-->String-->byte;
byte[] bb = str.getBytes();  //String转byte[];

char[] chStr = new char[3];
for(int i=0;i<chStr.length;i++) {
	chStr[i]=(char)bb[i]; //byte[]转char[];
}

String ss = new String(chStr); //char[]转String
System.out.println(new String(ss));

byte[] bbb = new byte[3];
for(int i=0;i<bbb.length;i++) {
	bbb[i]=(byte)ch[i]; //char[]转byte[]:强制类型转换;
}

八个基础类型与String互转

八个基础数组类型与String互转都可以使用以下方法,这里使用int型为例子。
如果字符串是StringBuffer或者是StringBuilder,则先转换为String,再做转换。

int -> String:

int i=12345;
String s="";

第一种方法:s=i+"";
第二种方法:s=String.valueOf(i);

这两种方法有什么区别呢?作用是不是一样的呢?是不是在任何下都能互换呢?
第一种方法:s=i+""; //会产生两个String对象
第二种方法:s=String.valueOf(i); //直接使用String类的静态方法,只产生一个对象

第三种方法:s=Integer.toString(i);

Integer i2 = new Integer(40);
String s = i2.toString();

String -> int:

s="12345";
int i;

第一种方法:static int parseInt(String s); 方法
第二种方法:int intValue();方法

public class Main {
	public static void main(String[] args) {
		// Integer(String s) 方法
		Integer i = new Integer("10");
		int a = i.intValue(); // 转换为int
		System.out.println(a + 10); // int型运算并输出

		// static int parseInt(String s) 方法
		int b = Integer.parseInt("20");
		System.out.println(b + 30); // int型运算并输出
	}
}

这两种方法有什么区别呢?作用是不是一样的呢?是不是在任何下都能互换呢?
第一种方法: i=Integer.parseInt(s); //直接使用静态方法,不会产生多余的对象,但会抛出异常
第二种方法: i=Integer.valueOf(s).intValue(); //Integer.valueOf(s) 相当于 new Integer(Integer.parseInt(s)),也会抛异常,但会多产生一个对象

使用拼接符示例

//使用拼接符示例
public class Main {
    public static void main(String args[]) {
    	int i = 123;
    	short sh = 456;
    	long ong = 789L;
    	
    	//直接使用拼接符:“+”
    	String s = new String();
    	s+=i;
    	s+=sh;
    	s+=ong;
    
    	System.out.println("The String: " + s); //输出:123456789
    	
    	float f = 111.134f;
    	double d = 222.3414d;
    	char ch = 'A';
    	boolean b = true;
    	String ss = new String();
    	ss += f;
    	ss += d;
    	ss +=ch;
    	ss += b;
    	
    	System.out.println("The New String: " + ss); //111.134222.3414Atrue
    }
}

使用String.valueOf

//String.valueOf示例
public class Main {
    public static void main(String args[]) {
    	int i = 123;
    	short sh = 456;
    	long ong = 789L;

    	String s = new String();
    	s = String.valueOf(i);
    	System.out.println("i: " + getType(i) + "; s: " + getType(s));
    	//输出:i: class java.lang.Integer; s: class java.lang.String

    	s = String.valueOf(sh);
    	System.out.println("sh: " + getType(sh) + "; s: " + getType(s));
    	//输出:sh: class java.lang.Short; s: class java.lang.String
    	
    	s = String.valueOf(ong);
    	System.out.println("ong: " + getType(ong) + "; s: " + getType(s));
    	//输出:ong: class java.lang.Long; s: class java.lang.String

    	//其他类型同理
    }
    public static String getType(Object o){ //获取变量类型方法
		return o.getClass().toString();
	}
}

使用toString

toString方法

public class Main {
    public static void main(String args[]) {
    	int i = 123; //short、long同理
    	
    	Integer ii = new Integer(i);
    	String s = ii.toString();
    	System.out.println("ii: " + getType(i) + "; s: " + getType(s));
    	//输出:ii: class java.lang.Integer; s: class java.lang.String

    	double d = 10.134d; //float同理
    	
    	Double dd = new Double(d); 
    	String ss = dd.toString();
    	System.out.println("dd: " + getType(dd) + "; sd: " + getType(ss));
    	//输出:ii: class java.lang.Double; s: class java.lang.String
    }
    public static String getType(Object o){ //获取变量类型方法
		return o.getClass().toString();
	}
}

使用parseXxx

//parseXxx示例
public class Main {
    public static void main(String args[]) {
    	String s = "1234";
    	int a = Integer.parseInt(s);
    	System.out.println("s:"+getType(s) + "; a:" + getType(a));
    	//输出:s:class java.lang.String; a:class java.lang.Integer

    	String ss = "56.78f";
    	float ff = Float.parseFloat(ss);
    	System.out.println("ss:"+getType(ss) + "; ff:" + ff +", " + getType(ff));
    	//输出:ss:class java.lang.String; ff:56.78, class java.lang.Float
    	
    	String sss = "89.1234d";
    	double dd = Double.parseDouble(sss);
    	System.out.println("sss:"+getType(sss) + "; dd:" + dd +", " + getType(dd));
    	//输出:sss:class java.lang.String; dd:89.1234, class java.lang.Double
    }
    public static String getType(Object o){ //获取变量类型方法
		return o.getClass().toString();
	}
}

使用xxxValue

//xxxValue示例
public class Main {
    public static void main(String args[]) {
    	String s = "1234";
    	Integer i = new Integer(s);
    	int a = i.intValue(); //转换为int
    	System.out.println("s:"+getType(s) + "; a:" + getType(a));
    	//输出:s:class java.lang.String; a:class java.lang.Integer

    	String ss = "56.78f";
    	Float f = new Float(ss);
    	float ff = f.floatValue();
    	System.out.println("ss:"+getType(ss) + "; ff:" + ff +", " + getType(ff));
    	//输出:ss:class java.lang.String; ff:56.78, class java.lang.Float
    	
    	String sss = "89.1234d";
    	Double d = new Double(sss);
    	double dd = d.doubleValue();
    	System.out.println("sss:"+getType(sss) + "; dd:" + dd +", " + getType(dd));
    	//输出:sss:class java.lang.String; dd:89.1234, class java.lang.Double
    }
    public static String getType(Object o){ //获取变量类型方法
		return o.getClass().toString();
	}
}

ComfyUI节点流实战:用Wan2.1制作电商短视频全流程(附人物/商品模板) 本文提供了一份详尽的ComfyUI实战教程,指导用户如何利用通义万相Wan2.1图生视频模型,高效制作适用于抖音等平台的电商短视频。内容涵盖从环境部署、核心工作流搭建,到针对服装、3C数码等品类的高级提示词模板与参数调优,旨在帮助电商从业者快速生成高质量、高保真商品展示视频,显著提升内容生产效率。 阅读详情

相关推荐

【STM32】STM32 CANFD外设的几种消息接收过滤模式

在控制器区域网络(CAN)系统中,正确配置消息过滤器对于有效管理网络通信至关重要。特别是在使用Flexible Data-rate Controller Area Network(FDCAN)时,选择合适的过滤器类型可以大大提高网络效率和消息处理速度。

林愿留的博客 6225

Java中的基本类型的类型转换,byte、short、int、long、float、double、Boolean、char

Java中不同的基本类型的值经常要进行相互转换,在Java中有8种基本数据类型,一般Boolean的值为true或false,不参与数据类型转换,下面就来说说另外7种基本数据类型的相互转换。整数类型有:byte(8位),short(16位),int(32位),long(64位)long的表示需要后面加L,不加L会默认当作int来处理,但是long a = 12这样定义不会出错,因为此时发生了int——>long的自动类型转换,此时的a是long类型,值为12.2147483647是int的最大值,如果定义i

sunzixiao的博客 2866

5G MBS(组播广播服务)深度解析:从标准架构到商用实践

5G MBS(组播广播服务)深度解析:从标准架构到商用实践

大家好,我是码农老gou,一名专注于编程技术的程序员。在这个博客中,我将与大家分享我在工作和学习中的经验、见解以及一些实用的技术干货。 1080

8个基本数据类型以及数据类型之间的相互转换

一、Java语言中8个基本数据类型分别是:byte、short、int、long、float、double、char、Boolean (1)byte类型占1个字节,取值范围:-128~127 // 1.声明一个byte类型的变量并初始化 byte b1 = 25; //byte b1 = 250; 不兼容的类型 byte类型数据的取值范围是 -128~127 // 像250这样直接写出来的数据称为直接量/常量/字面值 默认为int类型

weixin_45107775的博客 1835

RK3588 Ubuntu 20.04 编译 eglinfo 踩坑实录:从 Python 环境配置到 Mali 驱动调试

本文详细解析了在RK3588平台上使用Ubuntu 20.04编译eglinfo的全过程,包括Python环境配置、waf构建系统升级、Mali驱动调试等关键步骤。通过系统级软链接方案、驱动状态诊断和EGL环境验证技巧,帮助开发者快速解决常见问题,构建可靠的图形调试环境。

weixin_29158047的博客 373

新手必看:如何用PhaGCN2和vConTACT2搞定宏病毒组注释(附避坑指南)

本文为宏病毒组研究新手提供了使用PhaGCN2和vConTACT2进行病毒注释的完整实战指南。内容涵盖从Conda环境配置、软件安装、参数解析到结果解读的全流程,并重点分享了整合双工具进行交叉验证的策略与常见报错解决方案,旨在帮助研究者高效、准确地完成病毒分类注释工作。

j2k3l4的博客 797

自动类型转换、强制类型转换(C语言)

●自动类型转换:当运算符的两边出现不一致的类型时,会自动转换成较大(表达数的范围更大)的类型。 char -- short -- int -- long -- long long int -- float -- double ●强制类型转换:把一个类型强制转换成另一个类型(通常是较小的类型): (类型)值 例如:(int)5.2 (short)66 注:1.强制类型转换只是从变量计算出一个新的类型的 值,它并不改变那个变量,无论是值还是类型都不改变 #include <stdi...

m0_63361206的博客 1458

PYTHON 打印三角形大全

用PYTHON语言打印各种三角形

世上无难事,只要肯攀登 1万+

Java int和byte的类型转换和+=的用法

出现这种错误是因为c为byte类型而a为int类型的数据,byte类型的数据只占8位,int类型却占有32位,如果将int类型的数据转换为byte类型的数据,则要将其原有的32位减少为8位,则int类型的前24位会损失,只留下后8位,因此可能会有数据精度的损失,(例如:当a的值超过128时,int形成的机器数要超过后面8位,而如果将此int类型的值转换位byte类型的值时只能取后面八位,前面24位含有数据的被舍弃,导致数据精度损失较大),使用会报错而无法输出结果。

m0_74352735的博客 1178

LLM之RAG实战(五十四)| 复杂文档处理RAG框架:Ragflow

RAGFlow 是一种结合了检索增强(Retrieval-Augmented Generation,RAG)与流程控制(Flow)的人工智能技术架构。它通过检索外部知识库中的信息,结合自然语言生成技术,为用户提供更准确、更丰富的回答。同时,它还引入了流程控制机制,能够根据任务需求动态调整信息检索和生成的流程,从而更好地完成复杂的任务。RAGFlow 的核心优势在于将检索和生成相结合,打破了传统生成模型仅依赖内部参数进行文本生成的局限。

wshzd的博客 1066

TC387 MCMCAN Message RAM配置详解:Tx Buffer与Rx FIFO地址布局

在嵌入式CAN/CAN FD通信系统中,缓冲区和FIFO是数据收发的核心机制,而AURIX TC3xx系列单片机将这一机制集成在了MCMCAN模块专用的Message RAM中。这是一块由CAN控制器独占的内存区域,开发人员需要按照寄存器规范手动划分Tx Buffer、Rx FIFO、过滤元素等子区间。合理的RAM布局能确保不同功能区域互不重叠、有序排列,避免数据覆盖与错帧。通过掌握TXBC、RXF0C等配置寄存器的字段含义,结合实用的地址布局表,可以显著降低多节点CAN通信的调试成本。本内容面向使用TC3

weixin_34226182的博客 221

Java基本数据类型之间的相互转换

在平常的开发工作中,我们经常会进行基本数据类型的转换。那么,常用的数据类型有哪些呢?常用的数据之间应该怎么之间进行转换呢? 常用的基本数据类型:byte、short、char、int、long、boolean、double、float。 整型:byte:1字节 short:2字节 int :4字节 long:8字节 浮点型:float :4字节 double:8字节 布尔型:boolean :1/8字节 字符串:char:2字节 1:int和String之间...

qq_36833673的博客 719

go语言实现服务器server端与客户client端即时通信(附完整源码)

go语言实现服务器server端与客户client端即时通信(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 626

java各种数据类型的相互转换

StringBuilder转化为String String str = "abcdefghijklmnopqrs"; StringBuilder stb = new StringBuilder(str); 整型数组转化为字符串 StringBuilder s = new StringBuilder(); for(i=1;i<=n;i++) { s.append(String.valueOf(a[i])); } String str = ""+

qq_43273025的博客 649

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java中数据类型的相互转换

int 转 String int aq=2; String valueOf = String.valueOf(aq); String 转 int String pp ="1"; int parseInt = Integer.parseInt(pp); String 转 Double...

chunxun1164的博客 170

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java中不同数据类型的相互转换

总结了Java中不同数据类型转换的常用方法。

渔舟的博客 288

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

java基本数据类型、包装类与String之间的相互转换

人之所以痛苦,那是因为你在成长。--------magic_guo 基本数据类型、包装类与String之间的相互转换: 因为在一些方法中只接收类对象,此时就显得三者之间的相互转换变得尤为重要: 代码: public class WrapperTest { public static void main(String[] args) { // 基本数据类型转换成包装类:调用对应包装类的构造器 int num = 10; Integer in1 = new

magic_guo的博客 213

Java中各种数据类型的相互转换(待完善)

1.基本数据类型的转换 数据类型的转换:byte short char–>int–>long–>float–>double 所有byte short char类型被自动提升到int类型,再参与运算 任何数据和字符串相加都是字符串 2.基本数据类型与包装类的转换 基本数据类型 包装类 byte Byte short Short int Integer long Long boolean Boolean float Float double D

weixin_45948019的博客 172

java 常用数据类型间相互转换

java 不同数据类型间相互转换1. int 转 String2. String 转 int3. int 转 char4.char 转 int5. char 转 String6. String 转 char7. String 转 char[]8. char[] 转 String8. 数组 转 list9. Array、List、Set 、Map 相互转换 1. int 转 String 1、String s=num+"" //效率最低 2、String s=String.valueOf(num)

bianka的博客 216

【Java】数据类型之间的相互转换

1.String转换为char Java中char是一个基本类型,而String是一个引用类型。有时候我们需要在它们之间互相转换。 在Java中将String转换为char是非常简单的。 1. 使用String.charAt(index)(返回值为char)可以得到String中某一指定位置的char。 2. 使用String.toCharArray()(返回值为char[])可以得到将包含整个...

凝眸伏笔的博客 265

java中类型的相互转化_java 不同数据类型间相互转换

java 不同数据类型间相互转换1. int 转 String1、String s=num+"" //效率最低2、String s=String.valueOf(num) //效率最高3、String s=Integer.toString(num)2. String 转 int1、int num=Integer.parseInt(str)2、int num=Integer.valueOf(s...

weixin_39989384的博客 348

Java数据类型中String、Integer、int的相互转换以及日期的转换

1.Integer转换成int的方法    Integer i;     int k = i.intValue(); 即Integer.intValue();   2.int转换成Integer    int i;    Integer it = new Integer(i);   3.String转换成int的方法    String str

sujianxin2012的专栏 6339

Java中 基本数据类型与封装类、字符串的相互转换 方法汇总

一、基本数据类型与其对应的封装类之间的相互转换 基本数据类型转换为封装类 1·直接赋值  (自动打包) Integer i=3;   2·使用封装类的含参构造函数(实例化) Integer i=new Integer(3);   3·使用封装类提供的valueOf()方法(静态方法) Integer i=Integer.valueOf(3);  

hujutaoseu的博客 485

java中类型的相互转化_Java中的数据类型及相互转换方法

本文主要讲解两个部分:一、Java中的数据类型有哪些?二、数字类型和字符串类型相互转换的方法?一、Java中的数据类型有哪些:Java中的数据类型有:基本数据类型和引用数据类型;基本数据类型有:byte、short、int、Long、float、double、char 和 Boolean;引用数据类型有:String、StringBuffer、ArrayList、HashSet 和 HashMap...

weixin_29202687的博客 189

java数据类型之间的转换以及相互运算后的类型

char 不可以和 byte、short相互转换。

Mouth_OF_Lie的博客 382

java基本数据类型、对应的封装类以及字符串之间的相互转换

自学到这里,看完书有点乱,整理一下 自

青木刀风的博客 4319
上一篇: 【Java数据类型】“字符串”全解之“StringBuffer类和StringBuilder类”
下一篇: 【Markdown-01】快速入门Markdown
ALGO阿狗
博客等级 码龄9年 64粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值