2、数据类型和运算符——基本类型的类型转换

Java语言所提供的7种数据类型(不包括boolean)之间可以相互转换,有两种类型转换方式:自动类型转换和强制类型转换。

一、自动类型转换

  Java所有数值类型可以相互转换,如果系统支持把某种基本类型的值直接赋给另一种基本类型的变量,则这种方式称为自动类型转换。当把一个表数范围小的数值或变量直接赋给另一个表数范围大的变量时,系统可以进行自动类型转换;否则就需要强制转换。

  表数范围小的可以向表数范围大的进行自动类型转换,就如同有两瓶水,当把小瓶的水倒入大瓶种,不会有任何问题;否则就需要强制转换。

自动转换类型程序示范:

 1 public class AutoConversion{
 2     public static void main(String[] args){
 3         int a=6;
 4         //int类型可以自动转换float类型
 5         float f=a;
 6         System.out.println(f);
 7         //byte类型不能直接转换位char类型,下面代码将报错
 8         //AutoConversion.java:9: 错误: 不兼容的类型: 从byte转换到char可能会有损失
 9         byte b=9;
10         //char c=b;
11         //System.out.println(c);
12         double d=b;
13         System.out.println(d);
14     }
15 }

不仅如此,当把任何基本类型的值和字符串值进行连接运算时,基本类型的值将自动类型转换为字符串类型,虽然字符串类型不是基本类型,而是引用类型 。 因此 ,如果希望把基本类型的值转换为对应的字符串时,可以把基本类型的值和一个空字符串进行连接。

 1 public class AutoConversion{
 2     public static void main(String[] args){
 3         //String str1=5;
 4         //上面的代码是错误的,因为5是一个整数,不能直接复制给一个字符串
 5         String str2=3.5f+"";
 6         System.out.println(str2);
 7         //下面语句输出为7hello,先执行3+4=7,在进行类型转换
 8         System.out.println(3+4+"hello");
 9         //下面语句输出 Hello!34 ,因为 Hello+3会把3当成字符串处理
10         // 而后再把4当成字符串处理
11         System.out.println("hello"+3+4);
12     }

二、强制类型转换

  按照箭头方向,从左到右属于自动类型转换,且其他类型变量+""可以转换为字符串(引用类型),然而从右向左就需要强制转换啦。

  强制类型转换的语法格式:(targetType)value,强制类型转换的运算符是圆括号()

  当进行强制类型转换时,类似于把一个大瓶子里的水倒入一个小瓶子,如果大瓶子里的水不多还好,但如果大瓶子里的水很多,将会引起溢出 ,从而造成数据丢失 。 这种转换也被称为"缩小转换 ( Narrow Conversion) "。

示例:

 1 public class NarrowConversion{
 2     public static void main(String[] args){
 3         int iValue=233;
 4         //强制把一个int类型的值转换为byte类型的值
 5         byte bValue=(byte)iValue;
 6         //输出结果为-23
 7         System.out.println(bValue);
 8         //强制把一个double类型的值转换为int类型的值
 9         double dValue=3.98;
10         int tol=(int)dValue;
11         //输出结果为3
12         System.out.println(tol);
13     }
14 }

分析:

把一个浮点数类型强制转化为int类型的整数时,Java将直接阶段浮点数的小数部分。从此之外,上面的程序海拔233强制转换为byte类的整数,从而变成-23,这就是典型的溢出。下图示范这个转换过程:

容易出错的地方:

1、float变量赋值问题

//直接将5.6赋值给float类型的变量将出现错误,因为5.6的默认类型是double//错误: 不兼容的类型: 从double转换到float可能会有损失
float a=5.6//正确的用法:float b=5.6f;//或float b=float(5.6);

2、在通常情况下,字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型。

例如,把字符串转换成 int 类型,则可通过如下代码实现:

public class Str_intTest{
    public static void main(String[] args){
        String a="45";
        int iValue=Integer.parseInt(a);
        System.out.println(iValue);
    }
}

执行结果:

Java 为 8 种基本类型都提供了对应的包装类: boolean 对应 Boolean 、byte 对应 Byte 、 short 对应 Short、int 对应 Integer 、 long 对应 Long 、 char 对应 Character 、 float 对应 Float 、 double 对应 Double , 8 个包装类都提供了 一个 parseXxx(String str)静态方法用于将字符串转换成基本类型。

三、表达式类型的自动提升

  当一个算术表达式包含多个基本类型的值时,整个算术表达式的数据类型都将会发生自动提升。规则:

1、所有的byte、short、char类型将提升到int类型。

2、整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型。操作数的等级排列如图所示,位于箭头右边类型的等级高于箭头左边类型的等级。

典型错误:

short sValue=5;
//表达式中的 s Value 将自动提升到 i nt 类型,则右边的表达式类型为 i n t
// 将一个 int 类型值赋给 short 类型变量将发生错误
sValue=sValue-5;

原文地址:https://www.cnblogs.com/weststar/p/11996686.html

时间: 2024-10-10 01:54:31

2、数据类型和运算符——基本类型的类型转换的相关文章

Java 第二章 变量 、数据类型和运算符 笔记

Java 第二章 变量 .数据类型和运算符 一.变量:存储数据的一个基本单元. 二.变量的声明和赋值: 1)声明并赋值:数据类型 变量名=值;      例:int  price=1000; 2)声明.赋值分两步:数据类型 变量名;   例: int  price; 变量名=值;              price=1000; 三.数据类型2种: 1)基本数据类型8种: Byte 长度:-128~127(-2的7次方到2的7次方减1) Short   -2的15次方到2的15次方减1 Int

java中的数据类型和运算符的总结归类。

首先学习java肯定先要了解java的发展史,以及java的特点,常见的dos命令,jdk的安装,如何开发java程序等等一下概念行的东西,这里面我都不一一说了. 今天这一章主要想总结一下java中的数据类型和运算符2大方面. 再说数据类型之前先说一下标识符的命名规则: 总的命名规则:见名知意.如果有多个单词组成,首单词小写,其余单词的首字母大写(驼峰命名法).1.首字母只能是字母,下划线和$2.其余字母可以字母,下划线,$和数字3.不能使用预留关键字4.严格区分大小写(总体来说和c语音一样)

第二章:数据类型和运算符

第二章:数据类型和运算符 计算机中的进制 **标识符 总的命名规则:见名知意.如果有多个单词组成,首单词小写,其余单词的首字母大写(驼峰命名法).1.首字母只能是字母,下划线和$2.其余字母可以字母,下划线,$和数字3.不能使用预留关键字4.严格区分大小写 数据类型*** 基本数据类型 整型 byte(1个字节) short(2个字节) int(4个字节) long(8个字节) 浮点型 float(4个字节) double(8个字节) 字符型 char(2个字节)采用Unicode码 布尔型 b

Java 数据类型和运算符

                                                  Java   数据类型和运算符 Java 基础语法 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如,一条狗是一个对象,它的状态有:颜色.名字.品种:行为有:摇尾巴.叫.吃等. 类:类是一个模板,它描述一类对象的行为和状态. 方法:方法就是行为,一个类可以有很多方法.逻辑

2018-1-24 数据类型和运算符

有关于php数据类型和运算符的相关知识: 整体划分: 标量类型: int, float, string, bool 复合类型: array, object 特殊类型: null, resouce 整数类型:int integer 整数进制:十进制.八进制.十六进制 十进制转二进制:$v1 = decbin(123); 注意:参数必须是10进制数字,转换后的结果必然是二进制字符串. 十进制转八进制:$r1 =  decoct(十进制数字): 结果是一个8进制数字字符串. 十进制转十六进制:dech

第二章 变量,数据类型和运算符

第二章 &变量,数据类型和运算符 英文新识: double 双精度浮点 string  字符串 character  字母 integer  整数 Scanner  扫描仪 score  分数         name  名字     boolean  布尔   true  真          false  假 语法新知: double score =98.5; //声明双精度浮点型变量score存储分数 String name="张大侠";        //声明字符串型变

数据类型和运算符

1 强类型语言特征 1 所有变量先声明,后使用,2 指定类型变量只能接收类型与之匹配的值. 可以在编译过程中发现源码的错误,程序健壮. 2 基本类型 1 数值类型  整型,字符型,浮点型   可以经行类型转换(自动,强制) 2 布尔类型 3 注释 1 单行注释   // 2 多行注释  /*    */ 3 文档注释 /**    */ 4 api文档 应用程序接口文档,主要说明类,方法,field的功能,因此,Javadoc 工具只处理文档源文件在类,接口,方法,field,构造器,内部类之前

第二章 变量、数据类型和运算符

1 变量和数据类型 1.1 变量 电脑使用内存来记忆计算时所使用的数据 内存如何存储数据:内存像旅馆一样 开房间(单人间.双人间.总统套间);告诉内存在存放何种类型的数据 入住;存入数据 使用内存做什么:存放数据 怎么找到存入的数据? 根据内在地址可以找到内存空间的位置,但内存地址不好记 通过变量名可以简单快速地找到它存储的数据 1.2 数据类型 1.2.1 Java数据 那么Java中有哪些常用的数据类型呢? 正如前面所讲到的"根据数据的类型为其在内存中分配一块空间",不同的数据在存

Java数据类型和运算符

写在前面:刚由c++转到java,将java的一些特殊的地方记下,由此产生以下内容. 一.文档注释 以(/**)开始,(*/)结束.中间部分全部都是文档注释 实例: package c2; /** * * Description: * <br/>网站:<a href="http://www.baidu.com">百度</a> * <br/>Copyright (c),2011-2014 * <br/>This program