济南网站建设外包公司排名深圳优化网站
个人主页:平行线也会相交
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创
收录于专栏【JavaSE_primary】
文章目录
- 字面常量
 - 数据类型
 - 变量
 - 整型变量
 - 字节型变量
 - 浮点数变量
 - 双精度浮点数
 - 单精度浮点数
 
- 字符型变量
 - 布尔型变量
 - 空常量null
 
- 类型转换
 - 类型提升
 
- 字符串类型
 
字面常量
字面常量的分类:
1.字符串常量:如"hello"、“world”、“123”、“晚安”。
2.整型常量:与C语言中的整型是一个意思,即就是一个整数,如100、200、666。
3.浮点数常量:就是小数,如3.14、3.15、5.13。
4.字符常量:由单引号引起来的字符。如:‘A’、‘1’。
5.布尔常量:布尔常量就只有两种,即true和false。
6.空常量:null。
在Java中,字符串、整型、浮点型、字符型以及布尔型,都称为数据类型。
数据类型
Java数据结构分为两类:基本数据结构和引用数据结构。
 基本数据类型一共4类,8种:
4类:整型、浮点型、字符型、布尔型。
8种:字节型、短整型、整型、长整型、单精度浮点数、双精度浮点数、字符型、布尔型。
| 数据类型 | 关键字 | 内存占用 | 范围 | 
|---|---|---|---|
| 字节型 | byte | 1字节 | -128~127 | 
| 短整型 | short | 2字节 | -32768~32767 | 
| 整型 | int | 4字节 | -2^31 ~ 2^31-1 | 
| 长整型 | long | 8字节 | -2^61 ~ 2^61 | 
| 单精度浮点数 | float | 4字节 | 有范围,但不需要关注 | 
| 双精度浮点数 | double | 8字节 | 有范围,但不需要关注 | 
| 字符型 | char | 2字节 | 0~65535 | 
| 布尔型 | boolean | 没有明确范围 | true和false | 
需要注意的是:
- 无论是在32为平台还是在64位平台,int都是占用4个字节,long都占8个字节。
 - 整型和浮点型都是带有符号的。
 - 整型默认为int,浮点型默认为double。
 - 1KB=1024Byte,而一个Byte包括8个比特位。
 
变量
变量嘛,当然就是可以变得东西喽,对于那些可以经常改变的变量,在Java程序种称之为变量,而数据类型就是用来定义不同种类的变量的。
定义变量的语法格式:
数据类型 变量名=初始值;
比如:
int a=10;//a就是变量名,类型为整型,也可以把a称之为标识符,该变量a中放置的值为10。
 int a=10;double b=20;float c=20;char d='A';boolean e=true;System.out.println(a);System.out.println(b);System.out.println(c);System.out.println(d);System.out.println(e);
 

整型变量
这是整型变量的定义:
 int a=10;System.out.println(a);
 
注意,请看我这样定义一个整型变量可不可以呢?
 int a;System.out.println(a);
 
答案是否定的,在Java中,当一个局部变量(定义在方法中的变量)没有被初始化(即被赋为初值)时,那么这个变量是不允许被使用的,是不能够通过编译的。
我们看看int类型在Java中可以表示的数的范围:
 System.out.println(Integer.MAX_VALUE);//int类型的最大值System.out.println(Integer.MIN_VALUE);//int类型的最小值
 

同理来看看长整型的范围:
   System.out.println(Long.MAX_VALUE);System.out.println(Long.MIN_VALUE);
 

 长整型注意事项:
1.长整型变量的初始值后加L或者l,一般的花是加L。(如
long d=10L;)
2.长整型无论在哪个系统下都占8个字节。
3.long的包装类型为Long。
字节型变量
  byte g=10;System.out.println(g);System.out.println(Byte.MAX_VALUE);System.out.println(Byte.MIN_VALUE);
 

字节型的包装类型为Byte。
byte在任何系统中都占1个字节。
浮点数变量
双精度浮点数
double a=1.1;
System.out.println(a*a);
 

 为什么这里的结果不是具体的1.21呢?因为小数在计算机当中没有一个非常具体的完全的表示,只能说精确到某一位(比如说精确到后6位)。
1.double类型在任何系统下都是占8个字节
2.double的包装类型为Double。
3.double类型的内存布局遵守IEEE 754标准(和C语言一样),尝试使用有限的内存空间表示可能无限的小数,势必会存在一定的精度误差,因此浮点数是一个近似值,不是精确值。
单精度浮点数

 我们可以看到定义一个单精度浮点数变量时,如果53.2不加f或者F的话,会被默认为double类型,float为4个字节,而double占8个字节,所以计算机认为这个不安全的操作。所以我们在定义float类型变量时需要在初始值的后面加上f或者F。即 float n=53.2f;。
float类型在Java中占用4个字节,同样遵循IEEE 754标准。由于表示的数据精度范围较小,一般在工程上用到浮点数都优先考虑double,另外float的包装类型为Float。
字符型变量
 char ch='a';//注意占用的是2个字节char ch2='好';//也可以表示汉字System.out.println(ch);System.out.println(ch2);
 
1.计算机中的字符本质就是一个整数,在C语言中使用ASCII表示字符,而Java中使用Unicode表示字符,因此一个字符占用两个字节,表示的字符种类更多,包括中文。
2.Java中使用单引号 + 单个字母的形式表示字符字面值。
3.char的包装类型为Characher。
布尔型变量
boolean flg=true;
System.out.println(flg);
 

 注意:1.在Java中,boollean类型的值只有两个,要么是true要么是false。没有像C语言那样0是假,非零就是真的说法。
 2.java虚拟机规范中,没有明确规定Boolean占几个字节,也没有专门来处理Boolean的字节码指令,在Oracle公司的虚拟机中,boolean占用1个字节。
 3.Boolean的包装类型为Boolean。
空常量null
类型转换
在Java中,不同类型的之间的变量相互赋值的时候,会有较为严格的校检。
 而在Java中,类型转换主要分为两类:自动类型转换(隐式)和强制类型转换(显示)。
 举个简单的例子:
int a=10;
long b=20;
b=a;//编译可以通过,a和b都是整型,但是a的范围小(4个字节),b的范围大(8个字节),编译器会自动提升a为long类型,然后进行赋值
a=b;//编译不可以通过,会有数据丢失,不安全
 
简单来说:
 1.大范围的是不可以转成小范围的(数据可能丢失,不安全),但是小范围可以转成大范围的。
 2.两个毫不相干的类型是不能进行强制类型转换的。
 比如:
int a=10;
boolean flg=true;
flg=(bollean)a;//编译失败,因为这两个类型毫不相干。
 
自动类型转换:意思是代码不需要进行任何人为的处理,在进行代码编译的时候,编译器会自动进行处理,特点:数据范围小的转换为数据范围大的时会进行自动进行转换。
类型提升
1.int和long:int可以提升为long,但long不可以转为int
 例如:
        int a=10;long b=20;int c=a+b;
 

 4字节和8字节进行运算时,会先把4字节提升为8字节,然后再来进行运算,最后结果一定是8字节。
 这里有两种解决方法
 方法1:将其结果强转为int类型。
 
 方法2:
 
 2.byte和byte之间的运算
 
 当参与运算的数据小于4个字节的时候,会进行提升。
 我们当然可以进行强制类型转换,如byte c = (byte)(a+b);,但是,所有的强制类型转换都是有风险的,尽管编译可以通过。
 正确的写法是这样的:
 
 由于计算机的CPU通常是按住4个字节为单位从内存中读写数,为了硬件上实现方便,诸如short和byte这种低于4字节的类型,会先提升为int,在参与计算。
字符串类型
在C语言中,字符串是以\0为结尾的。
 而在Java中,字符串并不是以\0为结尾的。
String s="hello";
System.out.println(s);
 
注意:当字符串和整数在一起使用+号的时候,就是拼接的意思。比如:
 举个例子:
 int a=10;int b=20;System.out.println(a+b);System.out.println("a:"+a+"b:"+b);
 

在比如:
 

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

 1.int转为String
 比如:
        int num=10;//方法1String str1=num+"";System.out.println(str1);//方法2(借助方法)String str2=String.valueOf(num);System.out.println(str2);
 

2.String转为int
        String str="1234";//方法1int a=Integer.parseInt(str);System.out.println(a+1);//方法2a=Integer.valueOf(str);System.out.println(a+1);
 

 好了,以上就是Java数据类型与变量的基本内容。
 主要是Java中的各种常量,各种类型,以及类型转换的一些内容。
 就到这里吧,再见了各位!!!
 

