前言:人只活一次,你怎么舍得让自己往下坠落
大家好我是擦擦屁屁闻闻手,一个有味道的公众号,很多小伙伴关注我的时候第一句话就是这名字起得有味道,虽然名字起得有点随意吧,但是对技术的热爱可是一点都没少
常量、变量的补充
昨天我们讲了常量和变量,在讲到变量的时候我们只是了解了一下变量的格式,和输出一下常量(昨天项目交付有点忙,写的有点匆忙)
常量补充
- 常量创建的格式和变量是一模一样的只不过是在数据类型前添加关键字
final并且定义常量的变量名都是大写多个单词用下划线隔开 举例:
public class StringTest {
public static void main(String[] args) {
//定义变量
int variable = 100;
//定义常量
final int VARIABLE = 100;
//变量可以再次赋值,常量不可以
variable = 200;
VARIABLE=200;//此处报错 Cannot assign a value to final variable 'VARIABLE' //不能给最终变量赋值
}
}
变量补充
1. 概述
- 变量:常量是固定不变的数据,那么在程序中可以变化的量称之为变量(当时我在学习的时候心想这不是废话么)
举例:
数学中,可以使用字母代替数字运算,例如 x=1+5 或者 6=x+5。
程序中,可以使用字母保存数字的方式进行运算,提高计算能力,可以解决更多的问题。
比如x保存5,x也可以保存6,这样x保存的数据是可以改变的,也就是我们所讲解的变量。
2. 数据类型
2.1 java的数据类型分为两大类
- 基本数据类型:包括
整数、浮点数、小数、布尔 - 引用数据类型:包括
类、接口、数组
基本数据类型
四类八种 基本数据类型:
| 数据类型 | 关键字 | 内存占用 | 取值范围 |
|---|---|---|---|
| 字节型 | byte | 1个字节 | -128~127 |
| 短整型 | short | 2个字节 | -32768~32767 |
| 整形 | int(默认) | 4个字节 | -2的31次方~2的31次方-1 |
| 长整形 | long | 8个字节 | -2的63次方~2的63次方-1 |
| 单精度浮点数 | float | 4个字节 | 1.4013E-45~3.4028E+38 |
| 双精度浮点数 | double(默认) | 8个字节 | 4.9E-324~1.7977E+308 |
| 字符型 | char | 2个字节 | 0-65535 |
| 布尔类型 | boolean | 1个字节 | true,false |
Java中的默认类型:
整数类型是int 、浮点类型是double
2.2 基本数据类型与String类型的相互转换
static String valueOf(boolean b) 返回 boolean参数的字符串 boolean形式。
static String valueOf(char c) 返回 char参数的字符串 char形式。
static String valueOf(double d)返回 double参数的字符串 double形式。
static String valueOf(float f)返回 float参数的字符串 float形式。
static String valueOf(int i)返回 int参数的字符串 int形式。
static String valueOf(long l)返回 long参数的字符串 long形式。
static String valueOf(Object obj)返回 Object参数的字符串 Object形式。
通过查看API文档我们发现String类有很多重载的静态方法,来处理基本数据类型与Sting类之间进行操作
举例:
public class Test {
public static void main(String[] args) {
byte b = 10;
short sh = 20;
int a = 10000;
long l = 200L;//此处不加不会报错 因为long类型比int 类型范围大 可以兼容 加L声明是一个long类型,隐式数据类型转换
float f = 20.3F;//此处若要声明为float 必须加F 上边我们说过 浮点型默认值是double 此处涉及数据类型的转换放在后边讲
double d = 20.3;
char c = 'A';
boolean flag = true;
boolean flag1 = false;
System.out.println("------------转换前------------");
System.out.println(getType(b));
System.out.println(getType(sh));
System.out.println(getType(a));
System.out.println(getType(l));
System.out.println(getType(f));
System.out.println(getType(d));
System.out.println(getType(c));
System.out.println(getType(flag));
System.out.println(getType(flag1));
System.out.println("------------转换后------------");
//将上边的变量传入 String.valueOf()重载方法中
System.out.println(getType(String.valueOf(b)));
System.out.println(getType(String.valueOf(sh)));
System.out.println(getType(String.valueOf(a)));
System.out.println(getType(String.valueOf(l)));
System.out.println(getType(String.valueOf(f)));
System.out.println(getType(String.valueOf(d)));
System.out.println(getType(String.valueOf(c)));
System.out.println(getType(String.valueOf(flag)));
System.out.println(getType(String.valueOf(flag1)));
}
private static String getType(Object a) {
return a.getClass().toString();//此处.toString()只是为了方便设置返回值类型跟
}
}
结果: 可以看到 基本数据类型 经过 String.valueOf() 方法都会变成String类型
------------转换前------------
class java.lang.Byte
class java.lang.Short
class java.lang.Integer
class java.lang.Long
class java.lang.Float
class java.lang.Double
class java.lang.Character
class java.lang.Boolean
class java.lang.Boolean
------------转换后------------
class java.lang.String
class java.lang.String
class java.lang.String
class java.lang.String
class java.lang.String
class java.lang.String
class java.lang.String
class java.lang.String
class java.lang.String
2.3 char类型与int类型,先上例子:
public class Test {
public static void main(String[] args) {
int a = 'a';
char c = 97;
System.out.println(a);
System.out.println(c);
}
}
结果:
97
a
是不是很疑惑,前边我们说过Java对变量的数据类型有这严格的定义,不能随意转换如果要转换也是通过直接转换,那为什么
char类型可以赋值给int类型,而int类型也可以赋值给char类型呢,这就要说下我们的ASCLL码表.
简介:ASCII码,目前计算机中用得百最广泛的字符集及其度编码,是由美国国家标准局(ANSI)制定的知ASCII码(American Standard Code for Information Interchange,美国标准信息交换码),它已道被国际标内准化组织(ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母,ASCII码有7位码和8位码两容种形式。是不是看着很懵逼
简单来说:计算机只能计算和识别二进制,必须让计算机识别文字,才能和计算机进行交互,彼此也才能通过计算机通信。由此,有了ASCII编码的诞生,它起始于50年代后期,在1967年定案,是最初美国国家标准,供不同计算机在相互通信时用作共同遵守的西文字符编码标准。由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码;后来又扩展了128个,称为扩展ASCII码。
我们记得几个常用的就行 65对应大写A,48对应字符0,97对应小写a 依次向后排列
3. 数据类型转换(基本数据类型之间)
Java中数据类型转换分为 显式数据类型转换 和 隐式数据类型转换
先来看一张图
隐式转换:从表示范围小的类型转换为表示范围大的类型,可以直接转换,称为隐式转换。隐式类型转换又可以成为自动类型转换,就是由系统自动完成的类型转换。
显式转换:从表示范围大的类型转换为表示范围小的类型,需要强制转换,称为显式转换。强制类型转换的语法格式就是加一个括号,然后给出想要转换的目标类型
显示类型类型格式:数据类型 变量名 =(等号左边的数据类型)变量
案例:
public class Test {
public static void main(String[] args) {
short x = 5;
int y = x;//此处只会有警告'x' should probably not be assigned to 'y' “x”可能不应该赋值给“y”
System.out.println(y);
double d=9.234;
int a= (int)d;//此处不会有任何提示
System.out.println(a);
}
}
结果:
5
9
我们可以看到一个double类型的变量,通过显式转换变成了9,这是因为double类型比int类型大,举个通俗易懂的例子,有两个水桶,一个6升的一个4升的,将6升水桶里的水倒入4升水桶里,就会有溢出或者剩下那两升直接倒掉不要了,在开发中不建议使用显式类型转换,这可能会导致程序出现无法预估的问题
补充:数值类型和boolean类型之间不能转换;
本文使用mdnice排版