1. 1 不可撤销
  2. 2 小年兽 程嘉敏
  3. 3 手放开 李圣杰
  4. 4 迷人的危险3(翻自 dance flow) FAFA
  5. 5 山楂树之恋 程佳佳
  6. 6 summertime cinnamons / evening cinema
  7. 7 不谓侠(Cover 萧忆情Alex) CRITTY
  8. 8 神武醉相思(翻自 优我女团) 双笙
  9. 9 空山新雨后 音阙诗听 / 锦零
  10. 10 Wonderful U (Demo Version) AGA
  11. 11 广寒宫 丸子呦
  12. 12 陪我看日出 回音哥
  13. 13 春夏秋冬的你 王宇良
  14. 14 世界が终わるまでは… WANDS
  15. 15 多想在平庸的生活拥抱你 隔壁老樊
  16. 16 千禧 徐秉龙
  17. 17 我的一个道姑朋友 双笙
  18. 18 大鱼  (Cover 周深) 双笙
  19. 19 霜雪千年(Cover 洛天依 / 乐正绫) 双笙 / 封茗囧菌
  20. 20 云烟成雨(翻自 房东的猫) 周玥
  21. 21 情深深雨濛濛 杨胖雨
  22. 22 Five Hundred Miles Justin Timberlake / Carey Mulligan / Stark Sands
  23. 23 斑马斑马 房东的猫
  24. 24 See You Again Wiz Khalifa / Charlie Puth
  25. 25 Faded Alan Walker / Iselin Solheim
  26. 26 Natural J.Fla
  27. 27 New Soul Vox Angeli
  28. 28 ハレハレヤ(朗朗晴天)(翻自 v flower) 猫瑾
  29. 29 像鱼 王贰浪
  30. 30 Bye Bye Bye Lovestoned
  31. 31 Blame You 眠 / Lopu$
  32. 32 Believer J.Fla
  33. 33 书信 戴羽彤
  34. 34 柴 鱼 の c a l l i n g【已售】 幸子小姐拜托了
  35. 35 夜空中最亮的星(翻自 逃跑计划) 戴羽彤
  36. 36 慢慢喜欢你 LIve版(翻自 莫文蔚) 戴羽彤
  37. 37 病变(翻自 cubi) 戴羽彤
  38. 38 那女孩对我说 (完整版) Uu
  39. 39 绿色 陈雪凝
  40. 40 月牙湾 LIve版(翻自 F.I.R.) 戴羽彤
夜空中最亮的星(翻自 逃跑计划) - 戴羽彤
00:00 / 04:10

夜空中最亮的星 能否听清

那仰望的人 心底的孤独和叹息

夜空中最亮的星 能否记起

那曾与我同行 消失在风里的身影

我祈祷拥有一颗透明的心灵

和会流泪的眼睛

给我再去相信的勇气

越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请指引我靠近你

夜空中最亮的星 是否知道

那曾与我同行的身影 如今在哪里

夜空中最亮的星 是否在意

是等太阳先升起 还是意外先来临

我宁愿所有痛苦都留在心底

也不愿忘记你的眼睛

哦 给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行 哒~

我祈祷拥有一颗透明的心灵

和会流泪的眼睛 哦

给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行

小黄鸭系列java基础知识 | 基础语法:基本数据类型和数据运算

基本数据类型和数据运算

前言

今天我们还是分享一些java的基本语法:基本数据类型和基本数据类型的基本运算。不知道现在大家对java了解如何,按照我的计划,如果看到前面几次分享你都掌握了,那现在你应该可以用IDEA创建一个Java项目,对Java程序的基本结构也有了一些基本的认识,应该能够找出java程序中的方法、属性这些基本元素。

我知道,其实让一个已经用Java做了很多项目的小菜鸟(我觉得我还是个小菜鸟😂),以小白的视角来讲解Java基础,我觉得还是很难的,这里难的不是知识,难的是认知视角,是知识盲区,可能从我的角度来说,很多基础就是很简单,因为我已经掌握了,形成了一种认知习惯,而初学者正式没有这样的认知思维,就会觉得很难,用一句话说就是——难者不会,会者不难,这就好比你给一个没有任何抽象思维的小孩讲数学,他不能理解为什么1 + 1 = 2,但是请你相信,没有一个小孩子学不会1 + 1 = 2,也没有一个人学不会java,我会尽可能以一个初学者的视角,来分享Java的知识点。

正文

基本数据类型

上周的分享,我们也提到了数据类型,但是并没有展开来讲,今天我们有必要展开详细了解下Java的常用数据类型,我们先看下基本的数据类型有哪些:

数据类型 字节(byte) 位(bit) 长度 范围
byte 1 8 2^8=258 (-2^7, +2^7-1)
char 2 16 2^16 (-2^16, +2^16-1)
int 4 32 2^32 (-2^32, +2^32-1)
short 2 16 2^16 (-2^16, +2^16-1)
long 8 64 2^64 (-2^64, +2^64-1)
double 8 64 2^64 (-21024,+21024)
float 4 32 2^32 (-2128,+2128)
boolean 单个布尔类型占4个字节,用int常量表示,1表示true,0表示false;如果是布尔类型的数组,则用byte数组表示,即每个布尔值占1个字节 4/1 true/false

其中,byteshrotintlong属于整数类型;floatdouble属于浮点类型,也就是我们数学上的小数;char属于字符类型,就是我们日常生活中的各种符号,比如逗号、字母,还有其他的字符;boolean是布尔类型,也就是我们日常说的truefalse。这里的布尔类型比较特殊,大家只需要知道它的值只有truefalse即可。

需要注意的是,float类型和byte类型在使用的时候和其他是不一样的,float要数字后面加上fbyte要注意取值范围,否则会报编译错误:

这里补充一些小知识,很多没有计算机基础的小伙伴可能不是特别了解:

  1. 位(bit)表示二进制的一个存储单元,目前我们所有的计算机都采用的是二进制,位(bit)是最小的存储单位,存储的值要么是0要么是1。了解了这些,上面的长度和范围我们就知道如何计算了,比如byte类型,因为他总的长度是8,符号占一位(正/负),所以存储数值的只能是7位,那么它的范围就是-2^7 ~ +2^7-1,这里减1是因为中间还有个0,其他的以此类推。

  2. 数据长度转换:

    1 字节(byte) = 8 位(bit)

    1 KB = 1024 字节(byte)

    1 MB = 1024 KB (Kilobyte)

    1 GB = 1024 MB (Megabyte)

    1 TB = 1024 GB (Gigabyte)

    1 PB = 1024 TB (Terabyte)

    1 EB = 1024 PB (Petabyte)

    1 ZB = 1024 EB (Exabyte)

    1 YB (Yottabyte) = 1024 ZB (Zettabyte)

  3. float和double

    float的构成:1 bit(符号位) 8 bits(指数位) 23 bits(尾数位)

    double的构成:1 bit(符号位) 11 bits(指数位) 52 bits(尾数位)

    于是,float的指数范围为-127+128,而double的指数范围为-1023+1024,并且指数位是按补码的形式来划分的。

    其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。

    float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;double的范围为-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。

  4. 操作数据类型为byte、short、int 、char时,两个数都会被转换成int类型,并且结果也是int类型(在进行+,-,*,/,%运算操作时)

基本运算

我想在座的各位小伙伴都学过数学吧(没学过的出门右转),这里我们讲的也就是基本数据类型的数学运算,下面主要讲的是加、减、乘、除,这里我们以int为例:

开始之前我觉得我先得补充一下定义属性的语法,一般我们在定义一个属性的时候是这样的:

// 类型 属性名
int a;

类型就是我们的基本数据类型,当然也可以是其他类型,这里先不做讨论,你只需要清楚类型是什么就行了

赋值

赋值运算简单来说就是给属性赋予初始值,就像你刚出生你爸妈给你给你起名一样:

 // 赋值运算
int a = 0;
// 你爸你妈给你起名字是这样的,不一样的是我们日常生活中没有类型这个概念:
名字 = 张三;

这里赋值运算的运算符就是=,对于上面的代码,就是把a的值设置成0,这时候你在打印a的时候,就会输出0

加法运算和我们数学上的运算符号一样都是+,具体操作是这样的:

int b = 2;
int c = 3;
// 加法运算
int d = b + c;

打印输出:

减法和加法类似:

int b = 2;
int c = 3;
// 减法运算
int e = c - b;

输出结果:

乘法的运算符是*

 int b = 2;
 int c = 3;

// 乘法运算
int f = c * b;

输出结果:

除法运算符/:

int a = 6;
int c = 3;
// 除法
int g = a/c;

运算结果:

复杂四则运算

先看下下面的运算:

// 复杂四则运算
int h = a + c - a * 2/c * (a + b);

和我们数学上的四则运算一样,有括号的先算括号里面的,然后是乘除,再是加减

逻辑运算

等于

运算符:==

int a = 1;
int b = 2;
boolean c = (a == b)

上面的运算表示比较ab是否相等,结果是 c = false;如果a也是2的话,那结果就是true

不等于

运算符:!=

int a = 1;
int b = 2;
boolean c = (a != b)

上面的运算结果是 c = true;

大于(大于等于)

运算符:>>=

int a = 1;
int b = 2;
boolean c = (a > b)
boolean d = (a >= b)

上面的运算结果是 c = false; d = false;

小于(小于等于)

运算符:<<=

int a = 1;
int b = 2;
boolean c = (a < b)
boolean d = (a <= b)

上面的运算结果是 c = true; d = true;

短路与

运算符:&&

int a = 1;
int b = 1;
boolean c = (a < b)
boolean d = (a <= b)
boolean e = c && d;

这是个逻辑运算符,只有运算符两边都为true结果才为true,否则为false。为啥叫短路与,因为它在实际运算中如果第一个条件为false,它就不再运算第二个条件了。上面的运算结果e = false

短路或

运算符:||

int a = 1;
int b = 1;
boolean c = (a < b)
boolean d = (a <= b)
boolean e = c || d;

这是个逻辑运算符,只要运算符一边都为true结果就为true,只有两边都为false结果才为fasle。为啥叫短路或,因为它在实际运算中如果第一个条件为true,它就不再运算第二个条件了,上面的运算结果e = true

混合赋值运算

+=

int i = 1;
i += 6;

运算完成后,i的值变为7,上面的+=的完整写法是这样的:

i = i + 6;

-=

int i = 9;
i -= 6;

+=类似,-=表示 i = i - 6;上面运算结果i = 3

*=

int i = 9;
i *= 6;

+=类似,*=表示 i = i * 6;上面运算结果i = 54

/=

int i = 9;
i *= 3;

+=类似,/=表示 i = i / 3;上面运算结果i` = 3

其他运算

取余

int a = 9;
int b = 2;
// a对b取余
int c = a % b;

上面的运算结果是:

1

上面的运算表示计算9除以2之后的余数。

自增

int i = 1;
i++;

上面运算完后,i的值变为2;i++可以写成 i = i + 1;

自减

int i = 1;
i--;

上面运算完后,i的值变为0;i--可以写成 i = i - 1;

位运算

1、运算符

所有位运算都是基于二进制进行的

按位与
  • & 按位与,1,1为1,否则为0

按位或
  • | 按位或,有1则为1,0,0为0

按位异或
  • ^ 按位异或,相异为1,相同为0;

按位取反
  • ~ 按位取反

按位左移
  • << 按位左移

int c = 2<<3;//2向左移3位

按位右移
  • >> 按位右移

int d = 4>>2;//4向右移2位

2、知识点

  • 在实际开发中,如果遇到乘以2(或者2的次方,4,,8, 16……)可以采取向左移1位(2,3,4……);除法的话可以采用向右移的方式,这样操作不仅效率高,而且显得你很专业;

运算优先级

优先级 运算符 结合性
1 () 从左向右
2 !、+、-、~、++、-- 从右向左
3 *、/、% 从左向右
4 +、- 从左向右
5 «、»、>>> 从左向右
6 <、<=、>、>=、instanceof 从左向右
7 ==、!= 从左向右
8 & 从左向右
9 ^ 从左向右
10 | 从左向右
11 && 从左向右
12 || 从左向右
13 ?: 从右向左
14 =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= 从右向左

结语

今天介绍的内容有点多,特别是java运算部分,运算部分除了位运算部分,其他的一定要掌握,掌握的不好,会影响后面内容的学习。至于数据类型部分,大家要了解数据类型的取值范围,记住上面的注意事项,特别是byte,其他的暂时不需要过多关注。好了,今天的内容就到这里吧,写了好几个小时了,我也要好好休息下了

posted @ 2021-01-31 15:32  云中志  阅读(101)  评论(0编辑  收藏  举报