JavaSE知识总复习(一)

变量

什么是变量?变量其实就是存储数据、命名数据的标识符。变量有三个特征:1、允许变量存储的类型 ; 2、变量的符号; 3、变量中存储值

变量的定义

变量需要定义出来才能够使用它,定义也相对简单,变量类型 + 变量名称即可定义一个变量。需要注意的是,在同一个方法中不允许出现相同名称的定义变量。

		int i;
		double n;
		//也可以采用多个连续定义的方法
		int j, f, k, l;

变量的赋值以及初始化

变量光光定义还不行,还需要进行赋值或者是初始化才能进行运算操作,否则就会报错误,所以在使用的时候一定要确保变量是否存储有值。
在这里插入图片描述
那么赋值和初始化有什么区别呢?
初始化是指在定义的时候就将变量进行赋值,而赋值是指不在定义行中进行赋值。比较建议的是刚创建出来一个变量就直接对其初始化,这样在后面就不会粗心大意了。

        int i = 0; //这个是初始化
        int n;   //定义
        n = 10;   //赋值
        i = 11;   //赋值

变量的使用

变量的使用其实就是控制一个符号内的值来进行运算、打印等等操作

        int i = 0;
        int n = 10;
        System.out.println(i);
        int k = i * n;
        System.out.println(k);

结论

  1. 变量必须定义才能够被使用
  2. 如果变量仅仅创建而没有赋值或者初始化的话,不能进行操作,必须先赋值或者初始化

数据类型

Java的数据类型分为两大类:基本数据类型、引用类型。

基本数据类型

基本数据类型分为四类八种:

  • 整数类型:byte、short、int、long
  • 浮点数类型:double、float
  • 布尔类型:boolean
  • 字符类型:char

byte:

  • byte所占字节数为 1 字节,即 8 位;
  • 最大值:127(2^7 - 1);
  • 最小值:-128(-2^7);
  • 默认值:0;
  • byte变量主要用在文件操作中,因为文件操作基本上都是以字节数组来保存/读取/写入非文本文件(图片、声音、可执行文件等等);

short

  • short所占字节数为 2 字节,即 16 位;
  • 最大值:2^15 - 1;
  • 最小值:-2^15;
  • 默认值:0;
  • short基本上很少使用到;

int

  • int所占字节数为 4 字节,即 32 位;
  • 最大值:2,147,483,647(2^31 - 1);
  • 最小值:-2,147,483,647 (-2^31);
  • 默认值:0;
  • int类型变量是最常用的,整型数据默认上都是int类型,整型变量在进行运算的结果默认也都是int,所以在运算的时候注意;
	short k = 0;
	short n = 1;
	//错误结果,这样会编译错误
	short a = k + n;
	//正确写法:
	int a = k + n;
	short a = (short) k + n;

long

  • long 所占字节数为 8 字节,即 64 位;
  • 最大值是 9,223,372,036,854,775,807(2^63 -1);
  • 最小值是 -9,223,372,036,854,775,808(-2^63);
  • 默认值:0L
  • long类型变量在赋值时加上“l”或者“L”以作标识,否则容易报错

double

  • double所占字节数为 8 字节,即 64 位,其是双精度浮点数,遵循 IEEE 754 标准;
  • 浮点数类型默认的就是double类型;
  • 默认值:0.0;

float

  • float所占字节数为 4 字节,即 32 为,其实单精度浮点数,遵循 IEEE 754标准;
  • 默认值:0.0f;
  • 注意:在对float类型变量赋值/初始化的时候,值的后面要加上“f”或“F”;

boolean

  • boolean只表示一位的数据类型;
  • boolean变量只有两种值:true,false,没有第三种值,也不能向 C 语言一样使用 0 和非 0 代替;
  • 默认值:false

char

  • char所占字节数为 2 字节,即 8 位,采用 Unicode 字符编码作为标准,且其存储空间较大,所以也能够存储汉字;
  • 最小值是 \u0000(十进制等效值为 0);
  • 最大值是 \uffff(即为 65535);
  • char类型可以存储任何字符
  • 注意:char变量类型的值需要使用 ‘ ’ 包裹且只能是单个字符

引用类型

除了上述的八种基本数据类型以外的变量都属于引用类型,引用类型顾名思义就是标识符指向对象的变量;
可以这么理解:引用类型变量的值并不是相对意义上的值,存储的是一个地址,而这个地址中存储的就是对象,至于什么是对象后续面向对象的时候会讲到;
画图了解:
在这里插入图片描述
引用和引用直接的赋值,是将引用存储的地址的赋值,也就是改变了指向的对象发生了改变
在这里插入图片描述

结论:

  1. 引用中存储的是对象的地址,并非对象的值,可以使用引用操作对象;
  2. 一个对象可以被多个引用指向,但是不能对象指向对象,也不能引用指向引用,更不能对象执行引用;
  3. 引用和引用之间的赋值是改变引用的指向,而不是改变对象

浮点数类型准确吗?

浮点数类型真的是准确的吗,答案是否定的,浮点书类型多多少少会有精度缺失的情况,让我们看看一下的代码:

        double a = 13.02;
        double b = 13.00;
        double s = a - b;
        System.out.println(s);

		//答案>> 0.019999999999999574

答案并不是我们所见到的 0.02 ,这就说明浮点数类型是不准确的,但是还是能够完成一般的操作运算,只是不能够将其用在货币系统操作上,我们常看到有关货币的代码,程序员们都是将其转换成整数才开始计算的;

结论:

  • 不能够使用浮点数类型进行比较运算
  • float、double的运算结果往往是不准确的

解决方案:
使用BigDecimal提供的方法进行比较或运算,但要注意在构造BigDecimal的时候使用float、double的字符串形式构建,BigDecimal(String val);详情请自己查询 BigDecimal api;

        BigDecimal b1 = BigDecimal.valueOf(Double.parseDouble("13.02"));
        BigDecimal b2 = BigDecimal.valueOf(Double.parseDouble("13.00"));
        double result = b1.subtract(b2).doubleValue();
        System.out.println(result);

更多的请查看:https://www.cnblogs.com/yuanzehong/p/6491117.html

运算符

算术运算符

算术运算符:+ - * / %
从左到右以此表示:加、减、乘、除、余
这里重点介绍 %:
% 表示求余,即两数相除得到的余数即为结果,例如:

		int a = 5 % 3; // a = 2
		// 5 / 3 = 1 …… 2 

值的注意的是负数的求余所得到的的结果也是负数

自增/自减运算符

自增运算符和自减运算符用法一致,这里以自加运算符举例说明;

自增运算符表示变量自动加一,其又分为前置自增和后置自增,二者的区别在于:前置运算符是先自增后参与运算,而后置自增则是先参与运算后自增;

也就是说不管是前置自增还是后置自增,变量的结果都是会改变的,其的影响就是对于运算的结果发生影响,举例:

        int x = 5;
        int y = 3;
        int g = ++x + y++; // 6 + 3 = 9 此时 x = 6, y = 4;
        System.out.println(g);
		//g = 9, x = 6, y = 4;
        int x = 5;
        int y = 3;
        int g = x++ + y++; // 5 + 3 = 8 此时 x = 6, y = 4;
        System.out.println(g);
        //g = 8, x = 6, x = 4

逻辑运算符

逻辑运算符是在编程中最常见的运算符:&&, ||, !
&&:逻辑与,同真即为真,一假即为假
一个表达式说明:

		true && true = true;
		true && false = false;
		false && true = false;

||:逻辑或,同假即为假,一真即为真

		false || false = false;
		false || true = true;
		true || false = true;

!:逻辑非,真变假,假变真

		!true = false;
		!false = true;

短路求值: && 和 || 之间存在短路求值,即前面表达式满足条件的情况下,后续表达式不在执行

&&:当前面表达式为 false 时,后续表达式不再执行;
||:当前面表达式为 true 时, 后续表达式不再执行;

		int k = 9;
		boolean a = 3 > 5 && k++; 
		//因为3 > 5的结果为 false,所以后面的 k++ 不再执行,
		//所以 k 还是 9
		boolean b = 5 > 3 || k++;
		//因为 5 > 3 的结果为 true, 所以后面的 k++ 不再执行
		//所以 k 还是 9

位运算符

位运算符包括:&、|、~、^

位运算符顾名思义就是按位进行运算,其主要是针对整数,对整数的二进制位进行按位运算

&:两个整数按位相与,只有二者都为 1 的情况才是 1,否则为 0;

|:两个整数按位相或,只有二者都为 0 的情况才为 0 ,否则为 1;

~:按位取反

^:按位异或,特点为二者相同为 0 ,相异为 1,其运算有两个特点:

		a ^ 0 = a;
		a ^ b ^ b = a;

注意: 值的注意的是

  1. & 和 | 也能够实现 && 和 || 的功能,当运算两边为整数时实行位运算,当运算符两边为表达式时执行逻辑运算;
  2. & 和 | 虽然能实现逻辑运算,但是没有短路求值,所以一般只作为位运算

三目运算符

表达式 ? 结果1 : 结果2

当表达式结果为 true 时执行 结果1的内容,反之为false则执行结果2

        int x = 5;
        int y = 3;
        int g = 5 > 3 ? (x = 7) : (y = 9);
        System.out.println("g 的结果为:" + g);
        System.out.println("x 的结果为:" + x);
        System.out.println("y 的结果为:" + y);

打印结果>>>

g 的结果为:7
x 的结果为:7
y 的结果为:3
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值