Day02-JAVA第一章 数据类型及数据类型转换(超超超炒鸡详细的呦,看这些就够啦)

🎈 🎈 🎈 恭喜你发现了一片新的天地,来到阿亮的世界欸,欢迎欢迎 🎉 🎉 🎉
🍬 🍬 🍬 亮亮我欸,在学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 规范书写

众所周知哈,标识符明了、代码美观会给人一种愉悦感,下面嗦一下代码规范书写叭
  1. 类的标识符、接口名:多用大驼峰式(大驼峰是指:每个单词的首字母都要大写)

eg:class MyFristName{}

  1. 方法、变量:常用小驼峰式(小驼峰是指:除第一个单词的首字母小写以外,往后的每个单词首字母都要大写)

eg:int goodStudentSum=0;

  1. 包:多用全小写

  1. 常量:单词常大写,用'_'分割

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 变量

  1. 变量:程序运行过程中,值可以发生改变。

  1. 作用:用来储存一个值,之后可以用这个变量表示这个数值。

  1. 作用域:范围从大到小可以,从小到大不可以

  1. 变量声明

java是强类型语言,声明一个变量时应先声明变量的类型
声明一个类型,在main函数的栈中会开辟一块该类型空间,传入的变量值不能大于该类型的范围
  • 具体表示为:数据类型+变量名称(标识符);

例:

int age;
String name;
char sex;
  1. 变量赋值

  • 具体表示为:数据类型+变量名=所赋予的值(该值必须要在数据类型范围内)

  • 可重复赋值,变量取最后的值

例:

int age=23;
double price=20.99;

5. 变量使用

  • 通过变量名访问传入的值

例:

int age=23;
//输出
System.out.println(age);//23
  1. 一起练练手叭~

    • 数据类型转换

3.1排序

boolean布尔类型不参与转换哦,所以以下只对剩下7种类型进行相互转换哦~

数据类型按从小到大排:byte->short/char->int->long->float->double

3.2 分类

  • 小到大转换为隐士转换/自动转换

  • 大到小转换为显示转换/强制转换

3.3 自动转换(隐士转换)

3.3.1转换规则

  1. 规则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个小时),可算搞完了,累死啦欸~

已努力,莫辜负!

您的支持是俺创作滴最大动力,您的鼓励是俺前进滴不竭源泉

感谢每一个看到这的追梦人😘

诸位,山顶见🏆

  • 15
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卫冕711

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值