java学习(2)之变量


一、对变量的整体认识

首先附上本节知识的思维导图从宏观上掌握变量:

在这里插入图片描述

接下来我们逐一梳理-----以 int num = 10; 为例

  • int是类型

  • num是变量名,变量名只能由数字字母下划线构成.但是数字不能开头.

  • 变量名命名规则-------见名知意.

  • 变量名最好采用驼峰书写;其中类名采用大驼峰命名,即第一个单词首字母大写;对于变量和方法的命名采用小驼峰,即,第一个单词字母小写,后续单词首字母大写.

  • 变量最好采用"名词"词性的单词来命名.

  • "="即赋值,换句话说也就是初始化.

  • 故此举代码的含义是把10放到num对应的空间中.

  • 输出变量num,"+“是java语法,即java中可以使用”+"对字符串 和 数字 进行拼接.其功能类似于C语言中的strcat函数.
    在这里插入图片描述

  • 变量的形态

  • c是存在于方法中的,因此称作局部变量

  • b是存在于类里面的,因此叫做成员变量

  • a前面被static修饰,故叫做静态属性

class Test {
static int a; // 静态属性/类成员变量/类变量
int b; // 属性/成员变量/实例变量
public static void main(String[] args // 局部变量) {
int c; // 局部变量
}

二、整型变量–int

  • 在java中,int整型变量占4byte.则可以表示的数的范围为[-231,231],这是因为1byte = 8bit.此处的范围用十进制表示大致为[-21亿,21亿].

  • 此处我们介绍一下中文数量级与英文数量级的对应:

    1. thousand = 1000(千) 2^10 = 1024
    2. billion = 1000 000; (百万) 2^20 = 1,048,576
    3. million = 1000 000 000;(十亿)2^30 = 1,073,741,824

    我们若要验证此范围,只需要一句代码

		System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);
  • Integer 是java标准库中已经实现好的一个类
  • Integer 也叫作 int 类的 “包装类”
  • '.'是成员访问操作符,相当于 “的”

运行结果如下图所示:
在这里插入图片描述
从图中我们可以看出 int 可以表示的数据范围和我们理论推算的一样.

  • 因此如果在实际情况中运算结果超出int所表示的最大范围,则会出现数据溢出.以最大范围加一验证一下此理论:
        System.out.println(Integer.MAX_VALUE + 1);

运行结果如图所示:
在这里插入图片描述
这是为什么呢?
其实在计算机中,数字增大减小的表示范围我们可以用下图来表示:
在这里插入图片描述
上图就是 int 表示的数字范围原理.

  • int 有正有负,最高位用来表示正负,即:若为0则为正;若为1,则为负.

三、长整型–long

  • 如果 int 所表示的数据范围无法满足要求,则需要使用长整型 long 类型来表示
  • long所表示数据范围是[-2^63, 2 ^63].
  • 在给 long 类型的变量赋值时,要在变量后面加上’L’,不区分大小写.如果不加,当我们需要表示一个非常大的值时,编译器会报错.
    在这里插入图片描述
    如果加上’L’,则会通过编译
    在这里插入图片描述

四、双精度浮点型–double

  • 在java中,整数之间的相除会舍弃小数部分.比如:
    在这里插入图片描述

  • Java 的浮点数表示遵守IEEE754标准,这就造成很多时候是无法表示精确值的.
    例如,输入以下代码,则会和我们日常认为的结果大相径庭
    在这里插入图片描述
    那么,计算机对于 a * b 的运算结果是多少呢?
    在这里插入图片描述
    因此,在代码中不能使用 ‘’==’’ 判断两个浮点数是否相等.而是应该将误差考虑进去.即:两个数的差值在误差允许的范围内即可认为是相等的.请看下面演示代码:
    在这里插入图片描述

五、单精度浮点型–float

  • 表示小数的时候优先使用float
  • 需要在变量后面加上’f’
    在这里插入图片描述
小结
  • 10这样的字面值,对应的类型是int.
  • 10 L这样的字面值,对应的类型就是long.
  • 1.5这样的字面值,对应的类型就是double.
  • 1.5f这样的字面值,对应的类型就是float.

六、字符型变量–char

  • Java中的char类型占两个字节,而C语言中,char类型占一个字节

  • C语言中由于ASCII码表的存在,导致字符和整型数值之间可以混用

    如果我们使用C语言中的char类型转换大小写在java中使用则会报错!!在这里插入图片描述

  • 因此引出了强类型和弱类型的概念,而Java是一门强类型的语言,不太支持隐式类型转换.相反,C是一门弱类型的语言.

  • Java中char类型占两个字节,表示的数值范围为[-32768,32767],其中2^16 = 65535

  • Java也可以表示其他一些字符,如下图所示:
    在这里插入图片描述
    但是若要在javac上编译时,需要加上一个编译选项-encoding

七、字节类型–byte

  • byte占一个字节----8个比特位,故其可以表示的空间大小为[-128,127],因此在给此类型变量赋值时不得超过此范围,否则会报错。如下图所示:
    在这里插入图片描述
  • byte是有符号的;Java的内置类型,就没有“无符号”的.
  • 网络数据传输中常用byte.
  • 尽量不要使用无符号的数据类型,因为无符号的数据在运算的时候可能出现负数,而又因为计算机中负数的最高位是-1,当数据类型将其判断为无符号的时候,就会变成1,这样1就在最高位了,在64位计算机中,最高位1代表十进制2^32.如下图所示:
    在这里插入图片描述

八、短整型–short

  • 占2字节,表示的数据范围为[-32768,32768]
  • 不常用,常用int,long

九、布尔类型–boolean

  • 只有两个值,即 true(真) 和 false(假).

            boolean value1 = true ;
            boolean value2 = false;
  • 和C语言中的真假不同(非0为真,0为假),和整数无关.
    在这里插入图片描述
    这也是Java强类型的体现

  • boolean 类型在JVM的实现中有时候占1个字节,有时候占2个字节

十、字符串类型–String

  • String 是 Java 标准库中已经创建好的类
          String s = "he he";
  • 使用 “+” 进行字符串拼接,类似于C语言中的 strcat.
    在这里插入图片描述
转义字符
  • \n 换行
  • \r 回到首行
  • \t 水平制表符
  • ’ 单引号
  • " 双引号
  • \ 反斜杠
  • 例如:输出一句话: my name is “zhangsan”
    在这里插入图片描述

十一、变量的作用域

  • 一般的编程语言都要求同一作用域中变量名不能重复.
    在这里插入图片描述
  • 局部变量的作用域在当前的代码块({})中生效.
    在这里插入图片描述
  • 成员变量或者静态成员变量,作用域更大一些.
  • 若在当前类的内部,则可直接访问;若是在类的外部,得看其他规则的限制(受限于"访问权限控制").

十二、变量的命名规则

硬性指标
  • 变量只能包含:数字,字母,下划线.
  • 数字不能作为开头.
  • 拼音作为变量名很常见.
  • 变量名对大小写比较敏感.
软性指标
  • 见名知意.
  • 使用名词.
  • 驼峰命名:多个单词构成的变量,除第一个单词之外,其他单词首字母大写.

十三、字面值和常量

  • 10 int 字面值常量,十进制.
  • 010 int 字面值常量,八进制.
  • 0x10 int 字面值常量,十六进制.
  • 10L long 字面值常量,也可以写作 10l.
  • 1.0 double 字面值常量,也可以写作 1.0d 或者 1.0D.
  • 1.5e2 double 字面值常量,相当于1.5 * 10^2.
  • 1.0f float 字面值常量,也可以写作 1.0F.
  • true boolen 字面值常量,同样的还有 false.
  • ‘a’ char 字面值常量.
  • “abc” // String 字面值常量.
    final关键字修饰常量
    在这里插入图片描述

十四、理解类型转换

  • 类型转换的场景:使用不同类型的变量相互赋值,或者混合运算.

  • 由于Java是强类型的编程语言,所以对类型检查比较严格.
    在这里插入图片描述在这里插入图片描述

  • 强制类型转换可以完成赋值.但是强制类型转换会将代码的正确性的风险转嫁给编程开发人员.
    在这里插入图片描述

  • 反向赋值是可以的
    在这里插入图片描述

  • 再看一个例子
    在这里插入图片描述

  • int / char和boolean之间的类型转换
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

  • 若进行强制类型转换
    在这里插入图片描述

  • 数据类型转换,表示范围小的可以隐式转换到大的数据范围类型中去.反之则要使用强制类型转换,但是这样会使得数据精度丢失.

十五、理解数值提升

在这里插入图片描述

  • 如果两个操作数都是比int短的类型,就会先统一都转成int,再进行运算.
    在这里插入图片描述
  • 若要编译通过,则需要强制类型转换
    在这里插入图片描述
  • 对于强制类型转换的快捷键:Alt + 回车,弹出如下所示对话框之后,再按回车.
    在这里插入图片描述

总结

  • 一张完整的思维导图来梳理今天学的知识。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值