🎈 🎈 🎈 恭喜你发现了一片新的天地,来到阿亮的世界欸,欢迎欢迎 🎉 🎉 🎉
🍬 🍬 🍬 亮亮我欸,在学C++、JAVA、HTML菜菜捏,大一咯,新的一年,想变强捏 ✍ ✍ ✍
🚩 首先,感谢您能认可我的文章点进来,我们又一次相遇在CSDN了嘿!
🎇 再次,本人郑重承诺我是一名爱国敬业、诚信友善、热爱人民、不沾黄赌毒、有理想有责任有担当、能吃苦肯奋斗的新时代好青年,大家不要害怕,欢迎大家与我交朋友 😉
❓ 接着,由于阿亮刚写博客不久,本文肯定有遗漏疏忽的地方,欢迎大家批评指正欸 🥳 🥳
🧨 最后,新的一年,愿你我都远离疫病,敢于直面攀登过程中的流言蜚语,亦不怕掉落低谷时的迷茫彷徨。让我们一起加油,共同进步叭~
🍭 🍭 🍭 按中国传统礼仪来讲,去别人家串门还得留下点东西再走呐,点都点进来了,不妨来个一键三连(哈哈哈哈哈哈哈哈哈哈哈,开玩笑的呐 😆 😆 😆 )
好了好了,不闹了,这是俺的第二天博客嘞,跟紧我,一起来学一下java的第一章叭——数据类型及其类型转换!! 🤗 🤗 🤗
本章共4个小节,要想直接看数据类型,可以直接从第2小节开始看嗷(第一小节为复习补充,与本章的数据类型无直接关系)
- 复习一下上节所学的知识点
1.1关键字
简单来说,被Java赋予特殊含义的单词叫做关键字,我们不能在进行使用。
下面有几个比较常见且重要的关键字我都罗列出来啦(看官老爷们请慢慢享用):
public 表示公共的
class 表示一个类
static 表示静态的
void 表示无返回值的空项目
main 主要是作为主函数程序的入口
1.2标识符
标识符主要是记住命名规则就好啦~
命名只能使用'a'-'z'和'A'-'Z'(26个字母大小写)和'0'-'9'(0到9阿拉伯数字)和'_'(下划线)和'$'(美元符)
不能使用关键字
不能使用数字作为开头 (个人认为比较重点)
严格区分大小写
1.3 规范书写
众所周知哈,标识符明了、代码美观会给人一种愉悦感,下面嗦一下代码规范书写叭
类的标识符、接口名:多用大驼峰式(大驼峰是指:每个单词的首字母都要大写)
eg:class MyFristName{}
方法、变量:常用小驼峰式(小驼峰是指:除第一个单词的首字母小写以外,往后的每个单词首字母都要大写)
eg:int goodStudentSum=0;
包:多用全小写
常量:单词常大写,用'_'分割
1.4 快捷键和自动生成的”小技巧“
(未列举全,这些只是比较常用的,要是想去看全部快捷键,直接在CSDN上搜即可,大佬们总结的都很好捏~)
psvm+回车键(enter) 自动生成主函数
sout+(enter) 自动产生输出格式
ctrl+Z 撤销
ctrl+D 复制该行并粘贴到下一行
ctrl+/ 每行一个注释符号”//“,摁一次多行注释,再摁一次注释解除
ctrl+shift+/ 多行代码注释在一个代码块里,即只有首尾有注释符号“/**/“,摁一行表示注释,再摁注释解除
- 数据类型与变量、常量
2.1数据类型分类
2.1.1基本数据类型(这里是重点嗷,敲黑板了!!)
根据声明时关键字不同、开辟内存空间所占字节数的不同,将数据类型分为四类八种,具体如下:
四类:整型、浮点型、字符型、布尔型
八种:byte、short、int、long、float、double、char、boolean
- 整型
大家都知道整数有像-2,0,34,324这样的储存起来比较简单的值比较小的整数,也有像几千万、几亿、几千亿这样储存起来困难的特别大的整数,那么当一个整数比较小时,我们给它开辟一个大内存,岂不是白白浪费掉了,所以根据整数的数据范围又将整形从小到大依次分为byte字节型、short短整型、int整型( 默认)、long长整型
- byte 字节型
(1)占1个字节,8个比特位
(2)数据范围为-128到127
原因为1个字节型整数,占8个byte位,即0000 0000。大家都知道计算机是由0/1序列的二进制数组成,(即1个比特位可以是0,也可以是1,有两种选择)。所以,8个比特位,会表示2^8个选择,即有256个数。又由于第一位(标红的)是符号位('1'表示为负,'0'表示正或表示0),所以当第一位为1时,可以表示128个负数,最小负数即为-128(1111 1111);当第一位为0时,可以表示128个数,刨出去0(0000 0000)时,剩127个正数,最大值即为+127(0111 1111)。从二进制方面简单理解为:当第一位符号位为0时,表示正数,其他7位全按1补齐,此时最大,即为127(0111 1111),当第一位符号位为1时,表示负数,其他7位全按1补齐,此时最小,即为-128(1111 1111)。
- short 短整型
占2个字节,16个比特位
- int 整型 ( 默认 )
(1)输入一个整数,会默认是int整型
(2)占4个字节,32个比特位
- long 长整型
(1)占8个字节,64个比特位
当我们定义一个long长整型整数时,发现报错了,这是为啥呢???
当我们尝试在长整型整数的最后加上L/l时,发现问题得到解决,建议大家还是用L,否则小写'l'与'1'极容易搞混哦.
(2)所以要记住定义长整型时末尾加L
- 浮点型
- float单精度浮点型
(1)在定义时,同long一样,只不过这个是在定义一个float浮点型小数时,在小数最后加'F'
(2)数据范围表示:精确到小数点后大概7位
- double 双精度浮点型(默认)
输入一个小数时,会默认为double类型的小数
- char字符型
(1)单引号引一个字符
(2)所占2个字节,16个比特位
- boolean布尔型
(1)与C/C++的bool不同,Java里布尔类型为boolean
(2)表示为true(真)/false(假)
(3)所占1个字节,8个比特位
2.1.2引用数据类型
- class 类
- String 字符串
(1)与C++不同,S要大写!!!
(2)String不属于基本数据类型
(3)用""包裹字符串
- interface 接口
- 枚举
- 注解
- 数组
2.2常量与变量
2.2.1常量
1. 常量:程序运行过程中,值不会发生改变。(无需输入、直接输出的值)
整数常量
eg:1、-230、1234567890678
浮点型常量
eg:12.34F、12.34
字符型常量
eg:'0'、'小'、'a'
布尔型常量
eg:true、false
字符串型常量
eg:"HelloWorld"、"你好,新年快乐哇~"
2.如何实现常量的输出呢,看完下面这张图,相信你应该明白了叭
2.2.2 变量
变量:程序运行过程中,值可以发生改变。
作用:用来储存一个值,之后可以用这个变量表示这个数值。
作用域:范围从大到小可以,从小到大不可以
变量声明
java是强类型语言,声明一个变量时应先声明变量的类型
声明一个类型,在main函数的栈中会开辟一块该类型空间,传入的变量值不能大于该类型的范围
具体表示为:数据类型+变量名称(标识符);
例:
int age;
String name;
char sex;
变量赋值
具体表示为:数据类型+变量名=所赋予的值(该值必须要在数据类型范围内)
可重复赋值,变量取最后的值
例:
int age=23;
double price=20.99;
5. 变量使用
通过变量名访问传入的值
例:
int age=23;
//输出
System.out.println(age);//23
一起练练手叭~
- 数据类型转换
3.1排序
boolean布尔类型不参与转换哦,所以以下只对剩下7种类型进行相互转换哦~
数据类型按从小到大排:byte->short/char->int->long->float->double
3.2 分类
从小到大转换为隐士转换/自动转换
从大到小转换为显示转换/强制转换
3.3 自动转换(隐士转换)
3.3.1转换规则
规则1:从小到大,不需要我们手动参与,小的数据类型自动提升为大的数据类型,即直接赋值(可以理解为小水桶的水倒入大水桶之中,直接倒入即可哦~)
规则2:(重点来咯,记住哈,一会要考的!!)bite、short、char之间除了bite->short(同为整型且小类型转大类型的情况)可以转换外,其他不允许相互转换;bite、char自身之间也无法相互转换,但是可以通过中介int来实现各自转换
3.3.2 转换格式
数据类型 变量=小数据类型的值
//例:
byte a=10;
int b=a;
//表示为byte类型转换为int类型,值不变,仍为10;
3.3.3 示例及练习
示例:
public static void main(String[] args) {
//byte->short
byte a = 12;
short b = a;
System.out.println(b);//12
//byte->char
byte c = 11;
char d = c;
//报错了,说明byte->char不能相互转换
//byte->int
byte e = 10;
int f = e;
System.out.println(f);//10
//char->short
short g = 14;
char h = g;
//报错了,说明short->char不能相互转换
//char->int
char i = 'A';
int j = i + 1;
System.out.println(j);//66
//字符转化为阿斯克码值存入int整型中
//int->float
int k = 12345;
float m = k;
System.out.println(m);//12345.0
//float->double
float n = 12.3245F;
double p = n;
System.out.println(p);//12.32445000……
//byte->byte
byte q = 13;
byte r = 12;
byte s = q + r;
//报错,说明byte之间不能实现相互转化
//char->char
char t = 'a';
char u = '1';
char v = t + u;
//报错,说明char之间不能实现相互转化
}
能运行出来的结果如下:
练习:
练习1:判断如下代码是否编译通过,如果能,结果是多少?
short s1 = 120;
short s2 = 8;
short s3 = s1 + s2;
练习2:判断如下代码是否编译通过,如果能,结果是多少?
char cl = '0';
char c2 = '1';
char c3 = cl + c2;
练习3:判断如下代码是否编译通过,如果能,结果是多少? (这题有坑哦,仔细的小孩才能做对的 😉 )
int i = 4;
long j = 120;
double d = 34;
float f = 1.2;
System.out.printIn(i + j+ d + f);
练习4:判断如下代码是否编译通过,如果能,结果是多少?
int a = 1;
int b = 2;
double result=a/b;
System.out.printIn(result);
答案放这里了哈
1.编译不通过
byte short char 之间不能操作(包括相同类型)。需要通过int。
修改 int s3 = s1+s2;
2.编译不通过
byte short char 之间不能操作(包括相同类型)。需要通过int。结果返回值需要给为int,再强制类型转化为char后面会讲到的哈
3.编译不通过
这个题答案是编译不通过,不知道你做对了嘛,要不然再回去瞅瞅,float后没加F欸~
如果加上F,则可以运行,最后结果为double类型的159.2
4.可以通过
结果为0.0;原因为int类型,相除之后仍然为整数,所以a/b=0;再将0赋值给double类型的result,最后为0.0
3.4 强制转换(自动转换)
3.4.1转换规则
从大到小,需要我们手动参与,将大的数据类型强制转化为小的数据类型(可以理解为大水桶的水倒入小水桶之中,所以伴随倒入小水桶的过程,不免会有水的溢出,即强转过程中会伴随精度的损失~)
3.4.2 转换格式
大的数据类型 变量=(小的数据类型)被转化的值
//例:
int a=120;
byte b=a;//当写成这样时,编译错误
byte b=(byte)a; //强制转换
3.4.3 示例及练习
例:
public static void main(String[] args) {
//直接赋值
//int a=3.14; //当直接给int赋一个double值时,会报错
int aa = (int) 3.14; //我们只需要强转一下就可以了,此时小数点后精度缺失
System.out.println(aa); //3
//变量赋值
int b = 1200;
byte bb = (byte) b;
System.out.println(bb);
//b的值超出byte范围,强转时值会溢出,但不会报错是因为int有32个比特位,byte只取到最后8位,输出结果为后8位代表的值
//int->char
int c = 97;
char cc = (char) c;
System.out.println(cc);
}
3.5 字面值正整数和int类型转换
3.5.1字符串类的数字
1.String->int
格式:Integer.parseInt(字符串),返回值为int
Integer为引用数据类型 parseInt为方法
例:
public class day01 {
public static void main(String[] args) {
String s="12345"; //s="12345"
//Integer引用数据类型 parseInt方法
int awa=Integer.parseInt(s); //awa=12345
System.out.println(awa+1); //12345+1=12346
System.out.println(s+1); //"12345"+1="123451"
System.out.println(awa+"1"); //"12345"+"1"="123451"
}
}
2.int->String
格式:(1+"") 或 (""+1+2+3)
结论:字符串和数字类型相加,结果是字符串和数字拼接后的字符串
例:
int qaq=10;
String awa=qaq+"";
System.out.println(awa);
System.out.println(awa+1);
//显然awa为String类型才进行的拼接,如果为int类型则+1得11,而不是101
3.5.2 示例及练习
最后能看到这里真的很不容易啦,最后有个小的练习题练练手叭!
求System.out.println(1+2+3+"4"+5+6)最后结果 ?_?
- 个人心得
肝了一晚上(4个小时)+一上午(3个小时),可算搞完了,累死啦欸~
已努力,莫辜负!
您的支持是俺创作滴最大动力,您的鼓励是俺前进滴不竭源泉❤
感谢每一个看到这的追梦人😘
诸位,山顶见🏆