就是给类,接口,方法变量等起名时使用的字符序列
组成规则:英文字母,数字,$ -
注意事项
1.不能以数字开头
2.不能是Java中的关键字
3.区分大小写
单级:name
多级: cn.name(cn文件夹中再建一个name文件夹,其中.的作用相当于路径中的/)
规则:单词的 字母小写
一个单词:单词的首字母大写(Student)
多个单词:每个单词的首字母大写(GoodMorning)
一个单词:单词的首字母小写(main)
多个单词:从第二个单词开始,每个单词的首字母大写(studentAge)
一个单词:全部大写(AGE)
多个单词:每个单词都大写,中间用_隔开(STUDENT_AGE)
字符串常量(“爱国福如图”)
字符常量(‘a’)
整数常量(87364)
小数常量(78.89)
布尔常量(true)
空常量 null
注意
Java中针对整数常量提供了四种表现方式(二进制,八进制,十进制,十六进制)
1byte=8bit(binary digit)
1k=1024byte
1m=1024k
1g=1024m
1t=1024g
有符号的数据表示法(原码,反码,补码)
各位进制之间的转换
8421码,快速进行各进制数的转换
任意的X进制到Y进制的转换
有符号的数据表示法(原码,反码,补码)
原码 | 符号位 | 数值位 |
---|---|---|
+7 | 0 | 0000111 |
-7 | 1 | 0000111 |
反码
正数的反码与原码相同
负数的反码与原码符号位相同,数值位取反
反码 | 符号位 | 数值位 |
---|---|---|
+7 | 0 | 0000111 |
-7 | 1 | 1111000 |
补码
正数的补码与原码相同
负数的补码是在反码的基础上加1
补码 | 符号位 | 数值位 |
---|---|---|
+7 | 0 | 0000111 |
-7 | 1 | 1111001 |
A:变量的范围用数据类型限定,同一个变量不能从数值变成字符串
B:计算机在运算时,不能拿着这个空间去运算,真正参与运算的是空间内的值,该空间的名为变量名
C:空间还需要有值,否则这个空间会没有意义。
注意
Java语言是强类型语言,对于一种数据类型都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间
数值型(整数型byte,short,int,long,浮点类型float,double )
byte 1个字节 -128~127
short 2个字节
int 4个字节
long 8个字节
float 4 个字节
double 8 个字节
字符型(char)
布尔型(boolean)
注意
注意:
A:整数默认是int类型
B:浮点数默认是double类型
C:长整形后缀最好用L。或者l标记
D:单精度浮点数用F或f标记
“+” 运算符,做加法运算
一般我们在运算时,要求参与运算的数据类型一致。
boolean 类型不能转换成其他类型
A:byte,short,chart, 在参与运算时,如果有byte,short,chart类型的东西,首先要转化为int类型的,如果参与运算的过程中有long 类型,必为long类型——>float——>double 以此类推
强制转换类型
格式:目标数据类型 变量=(目标数据类型)(被转换的数据)
注意
不要随意使用强制转换,因为它隐含精度问题
float f1=(float)12.345;
flaot f2=12.345F;
f1 是通过一个double 类型转换过来的,而f2 本身就是一个float 类型
class MyByte{
public static void main(String[] args){
byte b1=3,b2=4,b;//定义三个byte类型的变量,b1 ,b2,b
b=b1+b2;//两个byte类型的变量运算,首先转化成int型,此时b为int型的//,和byte类型冲突。
//变量运算先进行类型提升
//两个相加首先看类型问题,最终把结果赋值的也会考虑类型问题
//常量相加,首先做加法,然后看结果是否在赋值的数据类型范围内,如果不是,才报错。
b=3+4;
}
}
‘a’ 97
‘A’ 65
‘0’ 48
字符串数据与其他数据做+,结果是字符串类型
这里的+ 不是加法运算,而是字符串链接符
数据类型中补充的几个小问题
1.在定义long 或者 float类型变量的时候,要加L或F。整数默认是int类型,浮点数默认是double 。byte short在定义的时候,他们接收的其实是一个int类型的值,这个是自己做了一个数据检测的,如果不在它们的范围内,就报错。
2.byte 值的问题
byte b1=127;
byte b2=(byte)128;//-128
byte b3=(byte)129;//-127
byte b4-(byte)130;//-126
byte范围:-128~127
128:10000000
-128:10000000(这里的1即是符号位,又是数值位);
3.数据类型转换之默认转换
byte,short,char–int–long–float–double
long :8 字节
float: 4 字节
A:它们底层的存储结构不同。(整数都是1,0进行存储的。浮点数用科学计数法存储的)
float类型数字在计算机中用四个字节存储,遵循IEEE-754格式标准
一个浮点数有2 部分组成,底数M和指数E
底数部分:使用二进制数来表示此浮点数的实际值
指数部分:占用8bit的二进制数。可表示数值范围为0~255;
B:float表示的数据范围比long的范围要大
C:Java语言中的字符char ,如何存储一个中文汉字(Java语言中的字符占用两个字节,)Java语言采用的是Unicode编 码。
(算术运算符,赋值运算符,比较运算符,逻辑运算符,位运算符,三目运算符)
作用:就是对变量进行自增1或者自减1
单独使用:放在操作数前面和后面的效果是一样的(而且,这种用法比较常见)
参与运算使用:
放在操作数的前面,先自增或者自减,然后再参与运算
放在操作数的后面,先参与运算,再自增或者自减
括号 (){}
正负号 + -
自增自减,非 ++,–,!
乘除,取余 * / %
加减 + -
移位运算 << >> >>>
大小关系 < <= > >=
相等关系 == !=
按位与 &
按位异或 ^
按位或 |
逻辑与 &&
逻辑或 ||
条件运算 ?:
赋值运算 = += -= *= /= %=
位赋值运算 &= |= >>= <<= >>>=
“+”的几种用法
A:加法
B:正号
C:字符串的连接符
扩展运算符(+= -= *= /= %=)
+= 把左边和右边做加法,然后把值赋给左边,左边必须变量,不能是常量
-= 用左边减去右边,然后把值赋给左边
*= 把左边和右边做乘法,然后把值赋给左边
/= 用左边除以右边。然后把整数值赋给左边
%= 用左边除以右边,然后把余数赋值给左边
注意:
扩展运算符其实隐含了一个强制类型转换
s +=1;
不等价于 s=s+1;
而是等价于 s = (s的数据类型)(s +1);
比较运算符(== != < > <= >= )
特点:无论你的操作是简单还是复杂,结果是boolean类型,即ture ,false
注意: == 不能写成 =
& | ^ 位运算符
! && ||逻辑运算符
逻辑运算符用于连接布尔类型表达式,在Java要写成
3
& 与 && 的区别(最终结果一样,但是双&&具有短路效果)
双&&时,如果左边为真,那么右边参与运算,如果左边为假,那么右边不参与运算(短路效果)(左边是false,右边不执行)
|| 与 | 的区别(||左边有ture 右边不执行)(|左边有ture 右边执行)
开发中常用的逻辑运算符(&& || !)
位运算(八进制运算)(底层运用较多。可以提高运算效率)
注意:要做位运算,首先要把数据转化为二进制(补码)
^ 位异或的特点:一个数据对另一个数据异或两次。该数本身不变
(左移):左边最高位丢弃,右边补齐0
(右移):最高位是0,左边补齐0,最高位是1,左边补齐1
(无符号右移):无论最高位是0还是1,左边补齐0
格式:(比较表达式)?表达式1:表达式2;
比较表达式:结果是一个boolean 类型
执行流程:
根据比较表达式的计算返回一个 ture 或者 false
如果条件为ture 运算后的结果是表达式1
如果条件为false,运算后的结果是表达式2
概述:提高程序的灵活性
键盘录入的实现过程:
A:导包
格式:
import java.util.Scanner;
位置:
在class上面
B:创建键盘录入对象
Scanner sc=new Scanner(System.in);
C:通过对象获取数据
int x=sc.nextInt();