【JAVA自学笔记】第二章 变量、数据类型、运算符

【JAVA自学笔记】第二章 变量、数据类型、运算符

本系列主要记录一个大三通信专业学生自学JAVA的学习过程的笔记,主要记录了个人看视频/看书过程中觉得需要记录下的东西,以便以后反复阅读。
第一次写博客,欢迎交流,欢迎大佬们来指点,感谢阅读:)
前两张的内容和我学校学的C++有许多相近的地方,所以只是大体记了重点,和差异的地方,适合有过一点基础的小伙伴们阅读奥XD

第一节 二进制

关于二进制的介绍网上有很多有趣的视频,其实就是“逢二进一”,与十进制相类似,这里不过多赘述了:)

第二节 二进制和十进制的转化

十进制转二进制:除2取余,逆序排列
二进制转十进制:权相加法

第三节 注释

单行注释 //…
在这里插入图片描述

多行注释 // (注:多行注释不能嵌套)
在这里插入图片描述

文档注释 /**
*…
*…
*/
注释中包含一些说明性的文字及一些JavaDoc标签(后期写项目时,可以生成项目的API)
在这里插入图片描述

第四节标识符、关键字、驼峰原则

标识符:给变量、类、方法以及包进行命名的

遵循的规则:
标识符必须以字母**(JAVA采用的是Unicode标准的国际字符集(16位),而非常用的的ASCⅡ(8位),所以字母不仅代表了英文,也包括汉字)**、下划线_、美元符号 开 头 标 志 符 的 其 他 部 分 可 以 是 字 母 、 下 划 线 、 美 元 符 开头 标志符的其他部分可以是字母、下划线_、美元符 线数字 的任意组合

JAVA标识符大小写敏感,且长度无限制

JAVA标识符不能是关键字

驼峰原则:
新的单词使用首字母大小写来区分;
表示类名的标识符,每个单词的首字母大写;
表示方法和变量的标识符,第一个单词小写,从第二个单词开始首字母大写(规范,无错)。

第五节变量的本质、内存画图、变量声明和初始化

变量(variable) 一个可操作的存储空间,空间位置是确定的,但里面的值不确定
在这里插入图片描述

一行可以声明多个变量,但不提倡,逐一声明可以提高程序可读性

第六节变量的分类和作用域

分类:
局部变量、成员变量(实例变量)和静态变量(类变量)

局部变量:定义在方法或语句块内部,作用于方法或语句快,从声明位置开始,直到方法或语句块执行完毕,局部变量消失

成员变量(实例变量):定义在类内部,方法外部,从属于对象,对对象创建,成员变量也跟着创建,对象消失,局部变量消失(对象的特有数据)

静态变量(类变量):定义在类内部,static修饰 ,从属于类,类被加载,静态变量就有效,类被卸载,静态变量就消失(对象的共享数据)
(注:方法就是一段可以被重复调用的方法块
在这里插入图片描述


第七节常量和final
常量(constant):一个固定的值,主要利用关键字final来定义一个常量,常量一旦被初始化后不能再更改其值
在这里插入图片描述

可见,常量只能初始化一次。

常量通常用大写字母和_组合表示,例:MAX_VALUE

常量分为:
字符常量:1、2、3、’a’、’b’、true、false、”helloWorld”
符号常量:前面使用final修饰的

第八节基本数据类型

JAVA是一种强类型语言,每个变量都必须声明其数据类型。

JAVA的数据类型分为两大类:基本数据类型引用数据类型
在这里插入图片描述

引用数据类型的大小统一为4个字节,记录的是其引用对象的地址

Byte(1) short(2) int(4) long(8)
Float(4) double(8)
Bit(位)

1byte=8bit

第九节整型变量和整型常量

byte 1字节 -2^7~ 2^7-1(-128~127)

[为何是-128:计算机运用补码运算,而非源码,用补码表示的-128为1000 0000(舍弃了除符号位的最高位),因此最小范围应为-128
(参考: 为什么8位有符号数的范围为“-128 — +127”?(转载加补充))]

以下同理

Short 2字节 -215~215-1(-3 2768~3 2767)约3万
Int 4字节 -231~231-1(-21 4748 3648~21 4748 3647)约21亿
Long 8字节 -263~263-1

表示方法:
十进制 423414
八进制 0423414
十六进制 0x423414
二进制 0B11010110

JAVA语言的整型常数默认为int型,
定义long类型需要在整形常量后面加l或L

第十节浮点型

Float 4字节 -3.403E38~3.403E38
Double 8字节 -1.798E308~1.798E308
由于浮点数多为无限的,浮点数一般存在误差
Float尾数可以精确到7位有效数字,很多情况下float类型的精度很难满足需求,所以常用double

科学计数法:
314=3.14E2(3.14x10^2)
0.314=3.14E-1(3.14x10^(-1))

没有后缀的浮点数一般默认为double类型,而定义float类型的浮点数需要有一个后缀F或f
例:float f=3.14F

如果需要进行不产生舍入误差的精确数字运算,需要使用BigDecimal类
浮点数是不精确的,尽量不要直接进行比较

第十一节字符型

字符型在内存中占2个字节
‘a’表示一个字符
“a”表示含有一个字符的字符串

Char类型用来表示在Unicode编码表中的字符,占2个字节,允许有65536个字符
Unicode具有从0到65535之间的编码,他们通常用从’\u0000’到’\uFFFF’之间的十六进制值来表示

转义字符
\b 退格
\n 换行
\r 回车
\t 制表符
\” 双引号
\’ 单引号
\ 反斜杠

第十二节boolean布尔型

Boolean类型只有两个常量值:true和false,在内存中占一个字节或4个字节。

不可以使用0或非0的整数来替代true和false(和C语言不同)

用来判断逻辑条件。

注:JVM规范指出boolean当作int处理,也就是4字节,boolean数组当作byte数组处理,也就是1字节

第十三节运算符介绍

算术运算符
二元运算符 +,-,,/,%
一元运算符 ++,–
赋值运算符 =
扩展运算符 +=,-=,
=,/=
关系运算符 >,<,>=,==,!=,instanceof
逻辑运算符 &&,||,!,^
位运算符 &,|,^,~,>>,<<,>>>
条件运算符 ?:
字符串连接符 +

第十四节算术运算符

+,-,*,/,%
规则:
整数运算:
如果两个操作数有一个为long,则结果为long
没long时,结果都为int,即使操作数有byte和short类型,结果也为int
在这里插入图片描述
在这里插入图片描述
虽然定义a为double(浮点型),但是运算步骤时先计算出31/3(两个int型相除,得到int型)得出10,再将10赋值给a,显示为10.0
浮点运算:
如果两个操作数有一个为double,则结果为double
只有两个操作数都是float,则结果才是float
取模运算:
其操作数可以为浮点数,一般使用整数,结果是“余数”,“余数”符号和左边操作数相同,如7%3=1,-7%3=-1,7%-3=1

一元运算符:
a++ 先赋值,再自增
++a 先自增,再赋值

第十五节赋值及其扩展赋值运算符

a * =b+3;//a=a*(b+3)

第十六节关系运算符

用来进行比较运算,结果是布尔值:true/false

==、!=是所有(基本和引用)数据类型都可以使用
< 、>=、>、<=仅针对数值类型(byte、short、int、long,float、double以及char(char值位于0-65535之间))

第十七节逻辑运算符

短路与&&和短路或||采用短路的方式,从左到右计算,如果只通过运算符左边的操作数就能够确定表达式的值,则不会继续计算运算符右边的操作数,提高效率
Boolean a=1>2 && (4<3/0)
不会报错的原因:因为1>2为false,将后面的短路(不进行运算),直接返回false,因此不会报错
boolean a=1>2 & (4<3/0)会报错

(^ 是异或,而非幂)

第十八节位运算符

~取反(注意:取反后得到的是结果的补码,需要将补码取补(即得到其对应的原码),才是最后显示的结果)
&按位与
|按位或
^按位异或
<<左移运算符,左移1位相当于乘2
右移运算符>> ,右移1位相当于除以2
例:
int a = 4<<2; //相当于4* 2* 2=16
Int b = 42>>3; //相当于42/2/2/2=5

注:4*2怎么最快?左移一位!

第十九节字符串连接符

在这里插入图片描述
在这里插入图片描述

34为3和4的连接
209证明了char不能进行连接,只是作为运算
在这里插入图片描述
在这里插入图片描述

通过“+”,将整个运算符转为字符串连接操作符

第二十节 条件运算符

三元运算符 x?y:z
x为boolean类型表达式,先计算x的值,若为true,则返回y;若为false,则返回z

第二十一节 运算符优先级

大体的优先级:
逻辑非>逻辑与>逻辑或
算术运算符>关系运算符>位运算符>逻辑运算符
遇到复杂的表达式,使用()解决优先级问题

第二十二节 自动类型转换

除了boolean类型之外的七种都可以自动转化
自动类型转换指的是容量小的数据类型可以自动转换为容量大的数据类型
在这里插入图片描述

(实线表示无数据丢失的自动类型转换,虚线表示在转换时可能会有精度的损失)
整型常量是int类型,但是可以自动转为byte,short,char,只要不超过对应类型的表数范围。

第二十三节 强制类型转换

又被称为造型,用于强制转换一个数值的类型,有可能丢失信息的情况下进行的转换时通过造型来完成的,也可能造成精确度降低或溢出
例:

double x = 3.14;
Int nx =int)x;//值为3,浮点数强制转成整数,则直接丢失小数部分(不会四舍五入)

对于超出了目标类型的表数范围的值,就会被截断成为一个完全不同的值。

第二十四节 基本类型转换常见错误

操作比较大的数时,要留意是否溢出,尤其是整数操作时
Int a,b;
ab=200亿(int的范围为21亿,显然结果超出了int范围)
long c = a
b;//仍为复数,因为顺序为先计算a*b,因为两个操作数都为int类型,所以结果为int类型,再将int类型的数赋值给c
解决方法:
方法一:long c = a*((long)b);//将b强制转为long类型后,和int类型的a运算,结果为long类型,没有超出long的范围
方法二:long c = 1L*a*b;//从左往右运算,先运算long类型和a相乘,结果为long类型的a,再与b相乘,结果为long类型,赋值给c

第二十五节 使用Scanner获得键盘的输入

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值