数据类型与变量和类型的转换,提升(Java)

一:字面常量

我们学习一门语言,第一个接触的字面常量就是"Hello World!".
常量: 在程序运行期间,固定不变的量称为常量.

public class Demo{
    
    
 public static void main(String[] args){
    
    
     System.Out.println("hello world!");
     System.Out.println(100);
     System.Out.println(3.14);
     System.Out.println('a');
     System.Out.println(true);
     System.Out.println(false);

其中的hello world!,100,3.14,a,true,false都是字面常量.
常量可以分为6大类:
1.字符串常量:由" "括起来的,比如"hello world!"等.
2.整形常量:直接写上的数字,比如:100等.
3.浮点数常量:直接写上的小数,如:3.14等.
4.字符常量:由’ '括起来的单个字符,如’a’等.
5.布尔常量:只有true和false两种
6.空常量:null

二:数据类型

先来了解一下什么是数据类型?
数据类型是固定大小内存的别名.
~~ 在定义变量时,需要根据变量将来保存数值的不同选择合适的类型来定义;在Java中数据类型主要分为基本数据类型和引用数据类型两大类.
基本数据类型有四类八种:
四类: 整型,浮点型,字符型以及布尔型
八种: 字节型,短整型,整型,长整型,单精度浮点型,双精度浮点型,字符型,布尔型.
如下图所示:
在这里插入图片描述

注意:
1.不论是在16位系统还是32位系统,int都占有4个字节;不论是在32位系统还是64位系统long都占8个字节
2.整型和浮点型都是带有符号的
3.整型默认为int型,浮点型默认为double型
4.字符串属于引用类型.
补充:字节是计算机中表示空间的基本单位,计算机使用二进制表示数据,我们认为8个bit为一个字节(byte).
其中:1KB=1024Byte,1M=1024KB,1G=1024M,1T=1024G.

三:变量

3.1 概念

在程序中,除了有始终不变的常量外,有些内容可能会经常改变,比如:人的年龄、身高、成绩分数、数学函数的计算结果等,对于这些经常改变的内容,在Java程序中,称为变量。而数据类型就是用来定义不同种类变量的。

3.2 语法格式

数据类型 变量名=初始值;

int a=10;
double b=3.14;

3.3 整型变量

3.3.1 整型变量的定义

//在定义时给出初值,在任何的系统下都占有4个字节.
int a=10;
//定义前没有给初始值,使用前必须设置初始值.
//范围:-2147483648 ~ 2147483647  (-2^31 --> 2^31-1)
int b;
b=10

3.3.2 长整型变量的定义

//为了区分int和long类型,一般在long类型变量的初始值之后加L或l
//long在任何的系统下都占有8个字节.
//L更好区分一点.
//long的表示范围为:-2^63 - 2^63-1 
long a=	10;
long b=10L;
long c=10L;

3.3.3 短整型变量的定义

//short表示的范围为:-32768~32767,-2^15 - 2^15-1 
//在任何的系统下都占有2个字节.
//short一般使用的比较少
short a=10;

3.3.4 字节型变量:

//byte在任何的系统下都占1个字节
//byte的范围是:-128~127,-2^7 ~ 2^7-1
byte a=10;

3.3.5 单精度浮点型

//float 在任何系统下都占用4个字节,一般在数字后加上f或者F.
//float 的范围是:-2^31 - 2^31-1
float num=1.0f;

3.3.6 双精度浮点型

//double在任何的系统下都占有8个字节.
//double的范围是:-2^63 - 2^63-1 
double a=1.0;
double b=2.0;
System.out.println(a/b);//输出0.5

double num=1.1;
System.out.println(num*num);//输出结果为:1.2100000000000002

3.3.7 字符型变量

//char占用2个字节,表示的范围是:-32768~32767,-2^15 - 2^15-1
//Java中使用 单引号+单个字母 的形式表示字符字面值
char c1= 'A';
char c2= '1';
//Java的字符型可以存放整型.
char c3= '牛';

3.3.8 布尔值变量:

/* 1.   Java的虚拟机规范中,并没有明确规定boolean占几个字节,
		也没有专门用来处理boolean的字节码指令,
		在Oracle公司的虚拟机实现中,boolean占用1个字节.
   2.boolean 类型的变量只有两种取值, true 表示真, false 表示假
   3.Java 的 boolean 类型和 int 不能相互转换~~~
     不存在 1 表示 true, 0 表示 false 这样的用法.*/
boolean a=true;
boolean b=false;

四. 数据类型转换与类型提升

4.1 数据类型转换

简单来说,就是把一种数据类型的变量转换成另外一种数据类型。转换过程中需要遵守一定的规则,不能够随意的转换.
基本思想: 只有同类之间可任意转换,低级转换到高级可自动转换,但高级转低级需要进行强制转换。
Java中的类型转换又分为两大类:自动类型转换(隐式类型转换,即小类型–>大类型)和强制类型转换(显式类型转换,即大类型–>小类型).

4.1.1 自动类型转换(隐式类型转换)

自动类型转换即:代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。

byte b=10;
int c=100;
c=b
System.out.println(c);
/*b是小类型,c大类型的,进行隐式类型转换,
  将小类型的byte自动转换为大类型的int进行赋值*/
//例子:
float f=13.14f;
double d=99.99;
d=f;
System.out.println(d);

4.1.2 强制类型转换(显式类型转换)

当进行操作时,代码需要经过一定的格式处理,不能自动完成。

扫描二维码关注公众号,回复: 14036511 查看本文章
byte b=10;
int c=100;
b=c;
/*
  此时代码会报错,因为b是byte型,是小类型的,而c是int型,相对与b来说是大类型的,
  当b=c时,相当于将大类型赋值给小类型,会出现数据的丢失,所以程序会报错.
  这个时候就需要强制类型转换.将b=c改为 b=(byte)c,程序就可以正常运行了;
*/
b=(byte)c;
System.out.println(b);
//例子:

float f=13.14f;
double d=99.99;
f=float(d);
System.out.println(f);

4.2 类型提升

不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。

//例一:
byte b1=10;
byte b2=20;
int ret1=b1+b2;
System.out.println(ret1);  //30
byte ret2=b1+b2;//此行会报错:从int到byte会有数据的丢失
/*
   原因:在做加法运算时,b1,b2被提升为int类型了
   byte+byte===>int+int---->int
   解决方法:进行强制类型转换,把int型强转为byte型
   即:byte ret2=(byte)(b1+b2);
*/
byte ret2=(byte)(b1+b2);
System.out.println(ret2);
//例二:
byte ret3=10+20;//此行不会出错,编译通过.
System.out.println(ret3);
/*
	不会报错的原因:
	10+20===>int+int--->int.
	编译器在编译时,会直接计算10+20的结果
	相当于 byte ret3=30;
	30没有超过byte的取值范围,因此可以通过.
	但是在例一当中,b1,b2是变量,加完之后结果是否会超过byte的取值范围就不知道了.
*/

字符串的转换:

String s1="hello";
String s2="1234";
System.out.println(s1);
System.out.println(s2);

String s3=" world!!!";
s1=s1+s3;
System.out.println(s1);//输出:hello world!!!

int a=1234;
//需求:将a转换为字符串类型
String s4=""+a;   //""为空字符串
System.out.println(s4);  //输出1234

String s5=String.valueof(a);
System.out.println(s5);  //输出1234
//需求:将数字类型字符串转换为整型数字
int b=Inteage.parseInt(s2);
System.out.println(b);  //输出1234	

猜你喜欢

转载自blog.csdn.net/weixin_47278183/article/details/119713721