《疯狂Java讲义》学习笔记(三)数据类型和运算符

news/2025/2/24 10:24:07

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1、注释

Java语言的注释一共有三种类型

  • 单行注释:用双斜线 ”//” 表示
  • 多行注释:用 /*------------------*/ 表示
  • 文档注释:用 /**-----------------*/ 表示

如果编写Java源代码时添加了合适的文档注释,然后通过JDK提供的javadoc工具可以直接将源代码里的文档注释提取成一份系统的API文档。 
javadoc默认只处理public 或 protected修饰的内容。如果开发者希望javadoc工具可以提取private修饰的内容,则可以在使用javadoc工具时增加 -private 选项。
使用javadoc可以生成自己的API文档
@author:指定Java程序的作者;@version:指定源文件的版本;@deprecated:不推荐使用的方法;@param:方法的参数说明信息;@return:方法的返回值说明信息;@see:“参见”,用于指定交叉参考的内容;@exception:抛出异常的类型;@throws:抛出的异常,和@exception同义

2、分隔号

分隔符(6个):Java语言里的分隔符有分号; 、花括号{}、方括号[ ]、圆括号()、空格、圆点 .

  • 分号“;” :Java使用分号“;”进行语句分隔而非回车,一行可以有多个语句,一个语句也可以跨多行 。Java语句可以跨多行书写,但一个字符串(可用“+”号连接)、变量名不能跨越多行。
  • 花括号“{”“}” :用于定义代码块
  • 方括号“[]” :用于访问数组元素,紧跟数组变量名,如:a[3] = 3;
  • 圆括号“(”“)”
  • 空格“ ” :可以任意出现多个空格,但不要使用空格把一个变量名分割开。空格包含:空格符(Space)、制表符(Tab)和回车(Enter)等
  • 圆点“.” :通常用作类/对象和它的成员(成员变量、方法和内部类)之间的分隔符,表明调用某个类或某个实例的指定成员


3、标识符(用于给程序中的变量、类、方法命名的符号)规则

 

  • 标识符可以由字母(Unicode所能表示的多种语言的字符)、数字、下划线和美元符号组成,但不能以数字开头
  • 标识符不能是Java关键字和保留字,但可以包含关键字和保留字
  • 标识符不能包含空格
  • 标识符只能包含美元符和下划线两个符号,不能包含@、#等其它特殊符号


4、Java关键字(50+3个)



5、数据类型分类


变量:相当于一个有名称的容器,该容器用于装各种不同类型的数据
两种分类:基本类型(Primitive Type)和引用类型(Reference Type)
八大基本类型:byte、short、int、long、char、float、double、boolean
四种引用类型:类、接口、数组和null


6、整型

 

  • byte:内存占8位(2的8次方,相当于256),范围是-128~127
  • short:内存占16位,范围是-32768~32767
  • int:内存占32位,范围是-2147483648~2147483647
  • long:内存占64位,范围是-2的63次方~2的63次方-1,必须使用L后缀,否则数值巨大时,系统不会当作long类型来处理

7、进制

  • 二进制的整数以0b或0B开头
  • 八进制的整数以0开头
  • 十六进制的整数以0x或0X开头,其中10~15分别以a~f或A~F来表示

8、字符型char


Java使用16位的Unicode字符集作为编码方式,支持世界上所有书面语言的字符,支持65536个字符编码。

字符型值有三种表示形式:

  • 直接表示 ‘A’
  • 转义 ‘\n’
  • 直接使用Unicode值来表示字符型值,格式是‘\uXXXX’,也可以不加‘’,格式是‘\uXXXX’

char类型在赋值时,可以选择赋值数字型或字符型,但是字符型需要加上单引号括住才可以,而赋值的数字必须符合Unicode字符集的范围即'\u0000'到'\uffff'。赋值为数字时会转化为对应编号的字符再赋值。

转义符:

\b:退格符
\n:换行符
\r:回车符
\t:制表符
\":双引号
\':单引号
\\:反斜线


9、浮点型

  • float:单精度,占4个字节、32位,要跟F或f后缀
  • double:双精度,占8个字节,64位,默认

两种表示形式: 

  • 十进制,如:5.12必须带小数点; 
  • 科学计算,如:5.12e2=5.12X10的二次方

正无穷大(正浮点数除以0):POSITIVE_INFINITY,负无穷大(负浮点数除以0):NEGATIVE_INFINITY,非数(0.0除以0.0):NaN
所有正无穷大相等,所有负无穷大相等,所有NaN不与任何数值相当包括NaN本身都不想等
下划线可以分割数值,整数值和浮点型数值都可以,如:double pi = 3.14_15_92_65_36;

10、布尔型


boolean只能是true或false,主要用于控制流程或三目运算的判断条件


11、类型转换

d8926ee68bca449da812b8f6b31c0fffa79.jpg

  • 自动类型转换:当把一个表数范围小的数值或变量直接赋给另一个表数范围大的变量时,系统可以进行自动类型转换
byte b = 10;
int i = byte;
  • 强制类型转换:当把一个表数范围大的数值或变量直接赋给另一个表数范围小的变量时,需要进行强制转换

强制类型转换的运算符是一对圆括号()

int i = 10;
byte b = (byte)i;

强转时如果超出表数范围会造成溢出

int i = 233;
byte b = (byte)i;
// b将输出-23
  • 表达式类型的自动提升:如果运算中有多种类型的,表达式将结果自动提升为最大的类型。

short s = 5;
s = s - 2;
// 将报错,因为表达式已经自动提升至int类型
int i = s - 2;
// 所以一般数据类型使用int

规则如下:

所有的byte、short、char类型将被提升到int类型
整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型。

12、基本类型的包装类

boolean->Boolean
byte->Byte
short->Short
int->Integer
long->Long
char->Character
float->Float
double->Double


13、直接量


直接量是指在程序中通过源代码直接给出的值,只支持三种类型:基本类型、字符串和null


14、运算符

 

  • 算术运算符,加、减、乘、除、求余(%)、自加(++)、自减(–)
  • 赋值运算符,等于号(=)
  • 比较运算符,大于(>),大于等于(>=),小于(<),小于等于(<=),等于(==),不等于(!=)
  • 逻辑运算符
&&:与,短路
&:与,非短路
||:或,短路
|:或,非短路
!:非
^:异或,当两个数不同时才返回true,相同则返回false

短路逻辑:前面条件符合时将不再运行后面的条件

  • 位运算符
&:按位与,当两位同时为1时才返回1
|:按位或,只要有一位为1时可返回1
~:按位非,单目运算符,将操作数的每个位全部取反
^:按位异或,当两位相同时返回0,不同时返回1
<<:左移运算符
>>:右移运算符
>>>:无符号右移运算符

扩展后的赋值运算符

+=:x+=y相当于x=x+y
-=:x-=y相当于x=x-y
*=:x*=y相当于x=x*y
/=:x/=y相当于x=x/y
%=:x%=y相当于x=x%y
&=:x&=y相当于x=x&y
|=:x|=y相当于x=x|y
^=:x^=y相当于x=x^y
<<=:x<<=y相当于x=x<<y
>>=:x>>=y相当于x=x>>y
>>>=:x>>>=y相当于x=x>>>y
byte b = 5;
b = b + 5;报错
b += 5;不会报错,机制不同
  • 三目运算符
expression ? if-true-statement : if-false-statement;
5 > 3 ? "5大于3":"5小于3";


15、运算符优先级(从上至下)

 

分隔符 . [] () {} , ;
单目运算符 ++ -- ~ !
强制类型转换运算符 (type)
乘法/除法/求余 * / %
加法/减法 + -
移位运算符 << >> <<<
关系运算符 < <= > >= instanceof
等价运算符 == !=
按位与 &
按位异或 ^
按位或 |
条件与 &&
条件或 ||
三目运算符 ?:
赋值 = += -+ *= /= &= |= ^= %= <<= >>= >>>=

 

转载于:https://my.oschina.net/fairy1674/blog/2980607


http://www.niftyadmin.cn/n/4581879.html

相关文章

GIthub开源项目实现翻页效果(FlipView)

Github项目地址&#xff1a;https://github.com/openaphid/android-flip 效果图一&#xff1a; 效果图二&#xff1a; 先看一下&#xff0c;使用是多么简单&#xff0c;首先有两个布局。 布局一&#xff1a; …

i510300h和i710750h的区别 哪个好

酷睿i7-10750H&#xff0c;显然是bai酷睿i7-9750H的继任者、未来高端游戏du本的标配&#xff0c;继续6核心zhi12线程&#xff0c;基准频率还是2.6GHz&#xff0c;但是最dao高睿频频率从4.6GHz大幅提升至5.0GHz。 i510300h和i710750h 哪个用来搭配笔记本更好用&#xff1f;看完你…

面向对象css oocss

1、概念oocss&#xff1a;将页面可重用元素抽象成一个类&#xff0c;用class加以描述&#xff0c;而对其他对应的HTML即可看成是此类的一个实例2、作用1、加强代码复用以便方便维护2、减小css体积3、提升渲染效率4、组件库思想、栅格布局可共用、减少选择器、方便拓展3、注意事…

i510300h和i5 9300h的区别 哪个好

1、5-9300H&#xff1a;内存类型为DDR4 2666MHz&#xff0c;LPDDR3 2133MHz。 2、i5-10300H&#xff1a;内存类型为DDR4 2933MHz。 哪一款笔记本值得购买?懂笔记本的人这样选! https://diannao.jd.com 二、集成显卡不同 1、I5-9300H&#xff1a;集成显卡为英特尔 超核芯显卡…

gradle dsl method not found : 'android()'

每当我们从GitHub上下载项目导入到自己Android Studio中总会报出这种错误&#xff0c;现总结一下解决方法。 第一&#xff1a;改变一下Compile sdk version 和Build 工具 Try Again。 第二&#xff1a;如果第一种不行&#xff0c;则删除外层&#xff08;Top-level&#xff…

Java技术自学规划(学习路线图、书籍、视频总结)

Java的火爆袭来&#xff0c;吸引了大批的初学者涉猎&#xff0c;想入行Java&#xff0c;却苦于自己没有基础&#xff0c;担心学不好。我告诉你&#xff0c;这些担心都是浮云&#xff0c;你只是惧怕走进一个新天地&#xff0c;人都是一样的&#xff0c;面对自己不熟悉的领域总会…

i510300h和r54600h的区别 哪个好

i5 10300这个cpu&#xff0c;大约相当于台式机中的R5 2500u或者是i5 7500&#xff0c;性能比i5 7500还要弱一点。由于笔记本的低压&#xff0c;散热等关系&#xff0c;实际表现上是要弱于台式机的。频率&#xff08;基频2.5GHz、加速4.3GHz&#xff09;本身分别高了100、200MHz…

Android开发进阶:使用依赖注入函数库Roboguice

原文地址 &#xff1a;http://mobile.51cto.com/abased-426620.htm 本文原标题是如何成为一个偷懒又高效的Android开发人员&#xff0c;我敢肯定你对这个标题肯定心存疑惑&#xff0c;但事实就是如此&#xff0c;这个标题完全适合Android开发人员。据我所知&#xff0c; Androi…