Java Part 001( 03_01_数据类型和运算符 )
注释
Java语言的注释一共有三种类型,分别是单行注释、多行注释和文档注释。
1. 单行注释
单行注释就是在程序中注释一行代码,在Java语言中,使用双斜线“//”进行单行注释。
2. 多行注释
多行注释是指一次性注释多行代码,在Java语言中,使用“/*……*/”进行多行注释。
3. 文档注释
文档注释用来说明程序的信息,在Java语言中,使用/**开头,*/结束。可以包含一个或多个@标签,每一个@标签必须在一个新行的开始紧跟星号*。
举个栗子:
/** *@author HelloWorld102 *这是一个文档注释 */ public class Test{ /* 这是一个多行注释 */ public static void main(String[] args){ //这是一个单行注释 System.out.println("Hello World"); } }
注释的使用
1. 排查错误, 快速排查出存在错误的代码片段
2. 书写逻辑处理细节, 不管是复杂还是简单的逻辑处理, 为了方便后续代码调整是节省时间, 书写代码完成了什么样的逻辑处理
3. 书写技术点描述, 有些语句可能不太常用, 避免每次看到相关代码都去百度
标识符和关键字
标识符
标识符
所谓的标识符, 就是用于给程序中变量、类、方法命名的符号
标识符的规则
1. 由字母、数字、下划线和美元符号($)组成, 但不能以数字开头
2. 不能是Java的关键字或保留字
Java关键字
Java关键字
Java语言中有一些具有特殊用途的单词被称为关键字,
当定义标识符时, 不能和关键字相同, 否则将引起错误, 如无法通过编译等
注意:
1. Java的所有关键字都是小写
2. main是默认入口的方法名,不是关键字,不是保留字
数据类型分类
注意:
空类型(null type)就是null值的类型, 这种类型没有名称;
空引用(null)是null类型变量唯一的值, 空引用可以转换成任何引用类型
空引用只能转换成引用类型, 不能转换成基本类型
Java 中主要有如下几种类型的常量
-
数值常量 (整数, 小数)
-
整数的四种表现形式( 二进制, 八进制, 十进制, 十六进制 )
-
进制: 一种计数方式
-
-
字符常量, 字符串常量
-
布尔型常量
-
null常量
System.out.println(12); System.out.println(1.23); System.out.println('a'+0); System.out.println("abc"); System.out.println(true); System.out.println(null); //null不可以打印,也不可以参与运算
进制相关的知识( 扫盲 )
1byte = 8bit ( 一个字节为8个比特位 ) 进制的转换 * 十进制转换为二进制 -- 除/余数 * 二进制转换为八进制, 十进制, 十六进制 -- 二进制按照三位分组为八进制
负数的进制表现形式( 扫盲 )
一个整数在计算机中的表现形式 6 ===> 00000000 00000000 00000000 00000110 一个整数占4个字节, 一个字节8个bit 问题:-6的表现形式是什么呢? 整数的二进制取反, 再加1 0000 0110 取反 1111 1001 + 1 0000 0001 -------------- 1111 1010 小知识: 负数二进制的最高位为1
Java 中主要有如下几种类型的变量
-
局部变量
-
类变量(静态变量)
-
成员变量(非静态变量)
Java变量的概念
内存中的一个存储区域
该区域有自己的名称(变量名)和类型(数据类型)
该区域的数据可以在同一类型范围内不断变化
为什么要定义变量
存储区域的重复使用; x = 3; x = 5;
什么时候使用变量
当数据不确定的时候,使用变量进行表示.
变量就如同数学中的未知数.
变量的定义格式
数据类型 变量名 = 初始化值; int a = 0;
注意:
变量在使用之前必须要进行初始化
变量的数据类型
记忆技巧: 四类八种 基本数据类型 数值型数据 整型 -------- byte 1个字节 -------- short 2个字节 -------- int 4个字节 -------- long 8个字节 (L/l) 浮点型 -------- float 4个字节 (F/f) -------- double 8个字节 字符型数据 -------------- char 2个字节 布尔型数据 -------------- boolean 4个字节 引用数据类型 类 接口 数组
变量的"类型提升" 和 "强制转换"
自动类型提升: 低类型 --> 高类型 当两个不同类型的数据进行运算时, 转换成占用内存比较大的那种类型之后再进行运算 比如: int a = 3; byte b = 2; int i = a + b; //a占用内存大, 所以b会提升为int类型进行运算 强制类型转换: 高类型 --> 低类型 char b = (char)a; 将一个占用内存大的数据, 赋值给一个占用内存小的数据是, 需要进行强制类型转换 比如: 显式强制类型转换 int a = 3; byte b = 2; byte i = (byte) (a + b); //a占用内存大, 所以b会提升为int类型进行运算 隐式强制类型转换 byte b = 2 + 3;
扩展信息 - 码表( ASCII美国码表 gb2312 国标码表 gbk国标扩展码表 Unicode国际标准码表 )
ASCII美国码表 gb2312 国标码表 gbk国标扩展码表 Unicode国际标准码表(万国码)
扩展信息 - 类型转换考题
byte b = 3 + 4; 1.是否可以正常执行 可以 2.执行原理 右边为int类型的数据, 当进行赋值是会进行判断, 如果符合范围, 隐式强制类型转换 int a = 2; byte b = a + 4; 1.是否可以正常执行 不可以, 编译就会报错 2.执行原理 a是变量, 无法进行大小范围的检查, 必须进行强制类型转换 int x; int a = 1; int b = Integer.MAX_VALUE; 1.是否可以正常执行 可以 2.执行原理 都为同种类型, 超出后自动舍弃最高位
运算符
-
-
赋值运算符
-
比较运算符
-
逻辑运算符
-
位运算符
-
三元运算符
算数运算符
+ - * / % ++ -- /** 重点: ++ -- b=a++(a先参与运算,在自增) b=++a(a先自增,再参与运算) 如果不参与运算,仅为自增 了解: 1. 6370 / 1000 * 1000 = ? 答案: 6000, 两个整数运算得到的是整数 2. 5 % 2 答案: 1 -5 % 2 答案: -1 (模运算中的负数符号, 仅参考被模数) 2 % -5 答案: 1 3. "5+5"+5+5 和 "5+5"+(5+5) 答案: 5+5=55 5+5=10 */
赋值运算符
假设x=6、y=3: =:若是x=y,那么x=3. +=:x+=y相当与x=x+y,结果是x=9. -=:x-=y相当与x=x-y,结果是x=3. *=:x*=y相当与x=x*y,结果是x=18. /=:x/=y相当与x=x/y,结果是x=2. %=: 重点: short s = 3; s+=4; //正常执行, 该表达式底层进行了类型转换处理 s = s + 4; //编译失败, 高类型转换为低类型, 需要进行强制类型转换
比较运算符
> < >= <= == !=
比较运算符的结果为true或者false
逻辑运算符
! &(&&) |(||) ^ 作用: 连接布尔类型数据的表达式 !true-->false true&true--->true 注意: ^ 异或的两边如果相同,结果为false;两边不同结果为true. true^true-->false false^false--->false 重点: && 和||, 如果左边可以得到整个表达式的结果, 那么右边的不参与运算, 所以效率更高, 开发中常用.
位运算符
<<(左移) >>(右移) >>>(无符号右移) &(与) |(或) ^(异或) ~(反码)
作用: 用于对二进制进行运算.
未完, 待续......................