Java笔记——进阶Java——Java变量与运算符

 

目录

一、变量与内存

1、变量的概念

2、变量的定义

3、内存的单位

二、Java变量的数据类型

1、基本数据类型

2、引用数据类型

3、数据类型转换

三、Java标识符规范及注释使用

1、变量名规则

2、变量名规范

3、Java中的注释

四、Java的运算符

1、算数运算符

2、关系运算符

3、逻辑运算符

4、位运算符

五、拓展与练习

1、小拓展

2、机试题


一、变量与内存

1、变量的概念

变量是内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型),Java中每个变量必须先声明,后使用, 该区域的数据可以在同一类型范围内不断变化。

用现实生活中的酒店来比喻:

我们将内存的空间比喻成酒店的空间。

我们在内存中声明了一个变量,是不是就相当于在酒店中要了一个房间。

我们定义一个变量的类型,是不是就相当于在要这个房间的时候,我们要选择是单人间还是双人间还是其他类型的房间。

我们在给这个变量类型起名,是不是就相当于在选好了房间类型后,给的这个房间的门牌号,要不然你怎么去找。

我们给这个变量赋值,是不是就相当我们入住了选好的房间。

2、变量的定义

数据类型分为基本数据类型和引用数据类型,引用数据类型有类(class)、接口(interface)、数组、字符串(String)等,基本数据类型有布尔型(boolean)、字符型(char)、数值性【整数类型(byte、short、int、long)、浮点类型(float、double)】

声明格式有三种:

1)、先声明后赋值

2)、声明并赋值

3)、一次声明多个变量

注意:局部变量必须先声明变量并赋值才可以使用;

3、内存的单位

内存存储单位:bit(位)t < Byte(字节) < KB < MB < GB < TB < PB < EB等等很多。

单位转换机制:8bit = 1 字节;1024字节 = 1KB,除了位和字节不一样,剩下的转换都是1024进一位的

谈谈二进制位的推算(十进制换算二进制)

1字节 = 二进制中的八位,在二进制中则表示为:0000 0000

举例:

数字1:占内存一个字节,在二进制中则表示为:0000 0001

数字2:占内存一个字节,在二进制中则表示为:0000 0010

数字3:占内存一个字节,在二进制中则表示为:0000 0011

数字4:占内存一个字节,在二进制中则表示为:0000 0100

........依次类推

二、Java变量的数据类型

1、基本数据类型

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

整数类型

这里解释中文意思:byte(中文意思为:字节)、short(中文意思为:短的)、int是integer的缩写(中文意思为:整数)、long(中文意思为:长的),所以想要真的当一个编码大佬一定要学好英语。

注意:每个变量类型都有其取值范围如果超出了就会报错

正常取值范围

在long类型中当我们取值一个大于int的值时会发生什么呢,如下图所示:

这是为什么呢?明明给long值赋的值在其取值范围内呀!为什么会报错呢?

原来呀在Java中,通常整数类型的值默认都是int类型的,嗯?你说什么时候是默认?看下图:

那这个和long类型有什么关系呢?

在Java中因为默认值为int,所以其申请的内存空间是int类型的空间,小于int的取值范围时没有关系,但是当大于int的取值范围时,就会出错。那么我们一定要存一个大值怎么办,那就是在long值得后面加上L,这个L是不分大小写的,但是如果写小写的话,会容易看成1,所以一般都是大写。当我们加了L后,就表示让计算机帮忙将两个int大小的空间合在一起来存值。

小数类型

这里解释中文意思:float(中文意思为:浮点型)、double(中文意思为:双重的),单从字面意思来看,我们都可看出float为单精度的小数、double为双精度小数。我们可以这样认为,双精度小数比单精度小数更精确

我们来测试一下float这个变量类型

怎么会报错呢?原来在定义float的时候需要给值得后面加上f

那么为什么要加f呢?这是因为在Java中小数类型的值默认为:double类型的,加f是为了让计算机认为我这个类型是单精度的float。另外f也不区分大小写,大写小写都可以根据自己喜好。

单精度float(有效小数位为:7位)如下图所示:

双精度double(有效小数位为:16位)一般小数位16位完全够用了。

布尔数据类型

boolean(中文意思为:布尔型),该类型变量的取值只有两个true和false代表真或假,有很多妙用。

单个字符类型

char(character的缩写中文意思为:字符),即存储单个字符的变量类型

那么char值可不可以赋值数字呢?看下图:

我们发现给char赋值86,控制台竟然输出的是个大写V,这是为什么呢?

在这里就不得不提一下ASCII编码了,那么什么时ASCII编码?

  ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。

在ASCII编码中每个字符

2、引用数据类型

在java里面除去基本数据类型的其它类型都是引用数据类型,自己定义的class类都是引用类型,可以像基本类型一样使用。比如:

类(class)

数组(array)

字符串(String)

....

别的先不说,我们现在只说String类型

String (字符串数据类型)

String类型是一个可以储存多个字符的字符串

严格来说String是有范围的,但你在常规使用中根本达不到这一目标

String 数据类型可以储存任何字符,并且其首字母必须大写;

注:在数据类型中,数字类型和布尔类型在赋值时,无需加别的符号;char数据类型在赋值时,要加英文版单引号,String数据类型赋值时,要加英文版双引号

3、数据类型转换

java中整数类型默认的int类型;小数类型默认的double;

自动类型转换:小转大,则为自动类型转换,但需要注意的是,这里说的是数字类型之间的转换

当大类型转换小类型时,程序不会自动转换

这时候就要我们手动加格式转换了

强制类型转换:大转小,前提条件为:大的类型的值必须在小的类型的取值范围中,另外小数类型转换整数时,会丢失精度,即小数位会去掉只保留整数。

三、Java标识符规范及注释使用

1、变量名规则

变量名规则是在Java中必须如此操作才可正常运行程序

1)、变量名的首字母必须以字母、下划线(_)、美元符($)开头。

2)、组成部分包含字母、数字、下划线(_)、美元符($)组合而成。

3)、变量名不可以与Java中的关键字重叠

2、变量名规范

变量名规范则是在Java编程领域来说是一种大众化认可,接受的一种书写规范。这可以让我们的代码看起来更通俗和简便。

1)、当多个字母组合在一起时的变量第一个单词的首字母小写,第二个单词的首字母大写。

2)、变量名语义化,如上图看到dogName就可以想到,这是一个小狗的姓名。

3)、杜绝使用下划线与美元符作为变量名的开头

4)、想成为一个大牛级别的程序员,必须克服自己不使用汉语拼音来命名。

3、Java中的注释

1)、单行注释://

2)、多行注释/* */

3)、文档注释/** */

四、Java的运算符

1、算数运算符

               

注:算数运算符操作数必须是数值类型。

分为一元运算(只有一个操作数)、二元运算(有两个操作数,运算符在两个操作数之间)

一元运算符

"++"和"--"运算符,只允许用于数值类型的变量,不允许用于表达式中;"++"和"--"可以用于数值变量之前或者之后;

两处使用差别:

"++"和"--":再同一行代码中,放在操作数的前方时,优先对操作数做+1或-1操作,后再执行别的操作。

"++"和"--":再同一行代码中,放在操作数的后方时,先执行别的操作,后再执行+1或-1操作。

二元运算符

在算数运算符中, "+ ", "- ", "* ", "/ "完成加减乘除四则运算,%是求两个操作数相除后的余数。运算规则和数学运算基本相同,在算数运算中,计算时按照从左向右的顺序计算,乘除和求余优先于加减,不同的是,程序中的乘运算符不可省略,在数学中可写为 "y=2x "而程序中必须写为 "y=2*x "。

注:当两个类型为数值类型+号放在中间则成为运算符

2、关系运算符

关系运算符用于比较两个数值之间的大小,其运算结果为一个逻辑类型(boolean类型)的数值。

判断相等的符号是两个等号,而不是一个等号,在java程序里一个等号为赋值,两个等号为判断相等,这个需要特别小心。比较运算符是程序设计中实现数据比较的基础,也是很多逻辑实现的基础,在程序逻辑中,经常通过比较一定的条件,来判断后续的程序该如何执行。

3、逻辑运算符

逻辑运算符要求操作数的数据类型为逻辑型,其运算结果也是逻辑型值。   

  对于&&来说,如果左侧的条件为false,则不计算右侧的条件,这种现象被称作短路现象。 所谓短路计算,是指系统从左至右进行逻辑表达式的计算,一旦出现计算结果已经确定的情况,则计算过程即被终止。 对于&&运算来说,只要运算符左端的值为false,则因无论运算符右端的值为true或为false,其最终结果都为false。

对于 || 运算来说,只要运算符左端的值为true,则因无论运算符右端的值为true或为false,其最终结果都为true。 所以,系统一旦判断出|| 运算符左端的值为true,则系统将终止其后的计算过程。

对于!运算来说,结果为true的则为false,结果为false的则为true。

具体操作如下图所示:

4、位运算符

位运算是以二进制位为单位进行的运算,也就是说,会把十进制数先转换为二进制进行运算;

比如20 从十进制转换成二进制则为:10100

比如1001011 从二进制转换成十进制则为:75

左移(<<)

栗子:int数据类型占四个字节(byte),一个字节占8位(bit),也就是说一个int占32位

int i = 10;的话转成二进制为:00000000 00000000 00000000 00001010

i << 2值为: 00000000 00000000 00000000 00101000

在将00000000 00000000 00000000 00101000转为十进制为40;

那么i << 2的计算结果为40

规律:值为10的话

向左位移2位,则2的2次方等于4,4在乘以10得到最终结果40;

向左位移3位,则2的3次方等于8,8在乘以10得到最终结果80;

栗子:int数据类型占四个字节(byte),一个字节占8位(bit),也就是说一个int占32位

int i = 25;的话转成二进制为:00000000 00000000 00000000 00011001

i >> 2值为: 00000000 00000000 00000000 00000110

在将00000000 00000000 00000000 00000110转为十进制为6;

那么i >> 2的计算结果为6

规律:值为10的话

向右位移2位,则2的2次方等于4,10在除以4得到最终结果2,小数位去掉,因为你的值类型为整数;

向右位移3位,则2的3次方等于8,10在除以8得到最终结果1,小数位去掉,因为你的值类型为整数;

按位与(&)

只有两个操作数对应位同为1时,结果为1,其余全为0.

栗子:

int类型的25&30转成二进制

25为:11001

30为:11110

值为:11000,转为十进制:24

按位或(|)

只有两个操作数对应位同为0时,结果为0,其余全为1.

栗子:

int类型的25&30转成二进制

25为:11001

30为:11110

值为:11111,转为十进制:31

异或(^)

当运算符两边不同的时候结果为1,两边相同的时候结果为0 这就是传说中的同性相杀,异性相吻。

栗子:

int类型的25^30转成二进制

25为:11001

30为:11110

值为:00111,转为十进制:7

验证结果如下图所示

五、拓展与练习

1、小拓展

1)、既然有输出语句,那么输入语句怎么写呢?

在Java中的util包下提供了一个Scanner类,可以用来接收控制台的信息。

首先我们先要导包:import java.util.Scanner;

创建对象:Scanner in = new Scanner(System.in)

接收语法为:int number = in.nextInt();

其他类型接收:

double age = in.nextDouble();

String age = in.next();

2)、“+”符号有几重身份呢?

只要链接了至少一个字符串的时候它就是连接符如:

System.out.println(“数字:”+5); 输出结果为 数字:5

如果链接的是一个数字类型的值时,那么他就是运算符如:

System.out.println(5+5); 输出结果为10

2、机试题

1:某娱乐场所一人266元,老人95折,会员卡9折,儿童半价,用代码输出每个人的价格

2:计算商品价格,如下图所示

3:输出超市订购单,如下图所示.积分计费规则为每100元为3积分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值