IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java复习day01 -> 正文阅读

[Java知识库]Java复习day01

变量与运算符

一、变量

1、定义变量

变量就是一切通过内存分配并赋值的量,分为不可变变量和可变变量

// 变量类型 变量名(= 初始值);
int x;
x = 1;
// 与下列效果一样
int x = 1;

其中变量类型决定了变量的数据类型、范围、存储在内存中所占的字节数以及可以进行的合法操作。变量名必须为一个合法的标识符。
定义变量的规则:

  • 变量名字中不能有空格
  • 禁止使用关键字作为变量名
  • 避免使用汉字,不要使用英文和拼音混写
  • 整体是驼峰结构,首字母小写如lowerUserName
  • $和_可以随意使用,但是不建议当做开头
  • 数字不能作为开头

2、数据类型(四类八种

类型类型名占用空间取值范围
整数类型byte8位(1个字节)-2^7 ~ 2^7-1
整数类型short16位(2个字节)-2^15 ~ 2^15-1
整数类型int32位(4个字节)-2^31 ~ 2^31-1
整数类型long64位(8个字节)2^63 ~ 2^63-1
浮点数类型float32位(4个字节)(正数)1.4E-45 - 3.4028235E38 (整体)-3.4028235E38 ~ 3.4028235E38^63-1
浮点数类型double64位(8个字节)1.7976931348623157E308 ~ 4.9E-324
字符类型char16位(2个字节)65536(看字符编码)
布尔类型boolean8位(1个字节)只有两个值true和false

3、各数据类型的取值范围

数据在计算机中存储形式为补码

  1. 整形的取值范围(以byte举例):byte是一个字节,共8位,其中第一位是符号位:0正1负。所以用于表示数值的其实只有7位。所以它的取值范围是:2^7 ~ 2^7-1
    但其中有几个特殊值需要特别注意

    • 0:
      源码:0000 0000
      反码:0000 0000
      补码:0000 0000
    • -0:
      源码:1000 0000
      反码:1111 1111
      补码:0000 0000(进位1溢出不要)
    • 128
      不能表示
    • -128
      源码:(1) 1000 0000
      反码:(1) 0111 1111
      补码:(1) 1111 1111(首位溢出)-128

结论:byte的取值范围为2^7 ~ 2^7-1
其他整形以此类推

  1. 浮点数的取值范围
    浮点数的取值范围涉及IEEE 754 较难,之后会单独复习一次
  2. char类型的取值范围
    需要注意目标的字符集应与源地址字符集相同,否则会出现乱码
    1. ASCII:
      (American Standard Code for Information Interchange,美国信息互 换标准代码) ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在 1986年,到目前为止共定义了128个字符。ASCII码,用一个字节表示,8 位能够表示256个字符,可以用来表示所有的大写和小写字母,数字0到 9、标点符号,以及在美式英语中使用的特殊控制字符,足够美国人用的 了,事实上他们只用到了128个字符,还有位就空着了。ASCII表
      主要记住几个常用的比如0为48;a为65;A为97。
    2. Unicode:
      Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编 码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种 语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和 符号最少由 16 位来表示(2个字节),即:2 ^16 = 65536(注:此处说的是最少2个字节,可能更多)。
    3. GB2312:把中国单独拉出来看,MBCS时期,中国于1980年发布了GB2312,就是国 标的拼音,这个编码用区位码(94个区,每区94个字符)的方式可以支持 7000多个汉字,它所收录的汉字已经覆盖中国大陆99.75%的使用频率,基 本可以满足汉字计算机的需要了。
      gb2312 是简体中文的码
      gbk 支持简体中文及繁体中文
    4. UTF-8:
      UTF-8,是对Unicode编码的压缩和优化,所以UTF-8包含于Unicode,只 是它不再是最少使用2个字节,而是将所有的字符和符号进行分类:ascii码 中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存。

4、数据类型的转换

  1. 自动类型转换自动类型转换
    自动类型转换也叫作隐式类型转换,指的是两种数据类型在转换的过程中不需要显式的进行声明,当把一个数据取值范围较小的数值直接赋给一个取值范围大的数据类型变量时,系统就会进行自动类型转换,否则必须使用强制类型转换。
byte i = 3;
int j = i; //程序自动将byte类型的变量i转换成了int类型
double k = j; //程序自动将int类型的变量j转换成了double类型

表达式类型自动提升
变量在表达式中进行运算时,也有可能进行自动类型转换,这就是所谓的表达式类型自动提升,如byte、short和char类型的变量在运算期间类型会自动提升为int,然后在进行计算,同理float类型也会提升至double类型

// 一个错误示范
byte a = 3;
byte b = 4
byte c = a + b;//此时a+b已经提升至int类型无法赋值给c,除非使用强制类型转换,但是可能产生数据数据的丢失
  1. 强制类型转换
    强制类型转换也叫显式类型转换,指的是两种数据类型之间的转换需要显式的声明。当两种类型不兼容时,或者目标类型取值范围小于源类型时,自动类型转换无法生效,此时就需要进行强制类型转换。
    将取值范围大的数据类型的变量赋值给取值范围小的数据类型时,可能会造成数据的丢失;就像将1L水瓶中装的750ml的水注入只有500ML水瓶中,其中有250ml的水就会溢出。
    所以是否进行强制类型转换就需要开发者自己决定了
    //示范一个强制转换例子
    //目标类型 变量名 = (目标类型) 值;
    byte a = 3;
    byte b = (byte) a;
    byte c = (byte) 4;
    float d = (float) 1.4;
    

二、运算符

1、算数运算符

	+ - * / % ++ --

其中%为取余
6 % 5 = 1
和数学的用法一样不过多复习
其中讲一下i++与++i的区别(i–与--i类似)
如果不赋值都是自增1,相当于i+1
如果赋值,i++则为现将i赋值给其他变量,然后自增
相反,++i为先自增再赋值

int i = 1;
int j = i++;//i 的值为变为2,但在其为1 时就赋值给j了所以j的值为1
int k = 1;
int m = ++k;//k与m的值都为2.k先进行自增变为2,再赋值给m

2、赋值运算符

+= -= *= /= =

=即为赋值例如

int x,y,z;
x = y = z =1;

+=、-=、*=、/=、%=为简写
x += 3就相当于 x = x+3 首先进行加法运算,再讲结果赋值给x,其他几个类似
赋值运算符中强制类型转换的自动实现
在为变量赋值时,当两个类型彼此不兼容或者目标类型取值范围小于源类型时,需要进行强制类型转换。但在使用+=、-=、**=、/=、%=时,强制类型转换会自动完成,不需要再进行显式的声明

short i = 3;
int j = 5;
j +=i;
//此时不会报错且j=8

3、比较运算符

运算符运算示例结果
==相等于4 == 3false
!=不等于4 !=3true
<小于4 < 3false
>大于4 > 3true
<=小于等于4 <= 3false
>=大于等于4 >= 3true

注意在使用比较运算符时,不要将比较运算符==和赋值运算符=搞混

4、逻辑运算符

与&

条件1条件2结果
100
111
010
000

或|

条件1条件2结果
101
111
000
011

异或^

条件1条件2结果
101
110
000
011

非!

条件1结果
10
01

短路运算符&&和||的结果和&和|的结果一样
区别为:
&&短路与,如果左边的结果为false,则会直接出结果不再进行右边的运算
||短路或,如果左边的结果为true,则会直接出结果不再进行右边的运算

5、位运算符

&按位与、|按位或、~取反、按位异或^<<左移、>>右移、>>>无符号右移

其中(<<)就是将二进制向左移动指定位数,运算时,左侧移走部分舍去,右侧的空位补0;

(>>)就是将二进制向右移动指定位数,运算时,左侧空位补0或1(原来是负数就补1,正数就补1),右侧移走的舍去
(>>>)就是无符号右移指定位数,运算时,不管原来为正数还是负数,都在左侧空位补0,右侧移走的舍去

运算符示例结果
<<0000 0001 << 20000 0100
<<1001 0011 << 20100 1100
>>0110 0010 >> 20001 1000
>>1110 0010 >> 21111 1000
>>>0110 0010 >>> 20001 1000
>>>1110 0010>>>20011 1000

6、条件运算符

条件运算符也称为三元运算符或三目运算符

条件 ? 结果1 : 结果2;

条件的结果一定是boolean类型,只能为true或是false,为true则输出结果1,为false则输出结果2
条件运算符的嵌套
举例:一行代码运算出i,j,k三者中的最大数

int i = 10;
int j = 30;
int k = 50;
int max = i > j ? i > k ? i : k : j > k ? j : k;

7、运算符的优先级

运算符优先级
由于()的优先级最高,编写代码时,可以尽量使用括号()来实现想要的运算顺序,以免产生歧义。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-01-16 12:54:46  更:2022-01-16 12:55:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:42:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码