基本数据类型、常量、变量、类型转换问题及运算符知识点总结

本文主要内容:

1.基本数据类型与引用数据类型

2.常量与变量

3.类型转换问题

4.运算符的总结

1.配置环境变量:
(1)Path:让工具可以在任何位置都可以用/让操作系统找到相应的指令
(2)classPath:生成的class文件都统一的存储在配置的目录下
(3)JAVA_HOME:让路径的写法变的相对简单(相对路径)
2.可能出现源文件与生成的字节码文件名字不一致

//定义类名为Test
class Demo{
    public static void main(String[] args){
        System.out.println("111");
    }
}
//源文件为Test.java,字节码文件为Demo.class
//但如果在class Demo前加上修饰限定符public,则类名必须为Test

3.基本数据类型
4整型:byte、short、int、long
2浮点型:float、double
1字符型:char
1布尔型:boolean
byte:8个bit、256中组合、数值范围在-128-127
short:2;int:4;long:8;float:4;double:8;char:2;boolean:1
4.引用数据类型
数组[]、类(抽象类)、接口、枚举、注解
5.常量
常量代表程序运行过程中,不能再次改变的值。
作用:
(1)固定的值:代表计算过程中经常用到的值,便于程序计算(PI)
(2)用来代表一个含义
6.什么样值为常量?
(1)固定不变的值,算作常量:可以认为基本类型的值是固定不变的,是常量。
(2)特殊的常量:String是引用类型的常量,它的值特殊。
(3)自己创建的空间,存储一个值,用final修饰。
7.变量
变量是一个空间,可以只创建空间,里面不存放内容,变量的空间创建后是没有默认值的(空的),空的变量不能拿来使用,编译报错。

byte x;//声明一个变量空间,空间的名字为x,空间内要求存储的类型时byte整数
x=1;//将一个1赋值到x空间进行存储

8.x=1在计算机底层都做了什么事情?
(1)x是什么?变量名 变量空间存在哪?
(2)1是什么?常量 常量存在哪?
(3)=是什么?赋值 做了什么?

1)在硬盘上创建了一个文件(Test.java)
(2)文件中的内容是我们编写的源代码(给计算机发送的指令)
(3)将源文件编译为.class文件(字节码留给计算机去识别)
(4)执行:在内存中执行,将硬盘上的内容(.class)加载到内存上
(5)执行内存的空间,进行赋值等等


9.常量值在常量缓存区中,常量值的存储形式不是十进制,是以二进制形式存储
整型:1——>32bit(int)
小数:3.4——>64bit(double)

float a = 3.4;//编译报错
//必须写为:
float a = 3.4f;float b = 3.4F;
//应为3.4是常量,存储在常量池中且为小数,其从double转为float会有损失,所以编译报错。
byte a = 1;
//1是常量,存储在常量池中且为整数,其占32个bit,但由于前24个为0,在赋值的时候,
//计算机做了一个自动的决定,自动类型转换。
long a = 2147483648L;
//如果创建的常量值超过int类型的范围,程序编译检测的时候为认为数字太大,如果我们
//真的需要这么大的数字,必须在后面加上L告知。

10.类型之间的转换
(1)同种数据类型之间是可以直接进行赋值操作的
(2)不同数据类型之间的赋值(转换问题)
保证在同种大数据类型之间才能发生转换
基本数据类型与基本数据类型之间,可以直接转换(自动、强制)
引用数据类型与引用数据类型之间,可以直接转换(自动、强制)
基本数据类型与引用数据类型之间,不可以直接转换(间接、包装类/封装)
11.不同数据类型之间的转换(保证在同种大数据类型之间的转换)
(1)基本数据类型与基本数据类型
整型与整型之间、浮点型与浮点型之间
主要是看占的字节数,占的字节数小的转换为占字节数大的数据类型可以直接自动转换;占字节数大的转换为占字节数小的数据类型必须强制转换,需要注意的是如果转换过程中的数值范围超过边界,可能会有损失。
整型数据类型与浮点型数据类型
主要是看精度程度,精度小的转换为精度大的数据类型可以直接转换;精度大的转换为精度小的必须强制转换。任何一个浮点类型都可以直接存放一个整型。
整型数据类型与字符型的数据类型
每一个字符都对应一个Unicode码,字符型转换为整型可以直接转换,整型转换为字符型需要强制转换。
12.运算符:用来指明对于操作数的运算方式
(1)按照操作数的数目来进行分类
单目、双目、三目
(2)按照运算符的功能来进行分类
算术运算、赋值运算、关系运算、逻辑运算、位运算
算术运算:+、-、*、%、/、++、–

int x = 1;
x++;
++x;
//前置++与后置++都是将x加一,即空间内的值加一。
int y = x++;//y=1,x=2,副本空间x的值是1将其返回给y
y = ++x;//y=2,x=2,副本空间x的值是2将其返回给y
//前置++与后置++都是将变量x的内容先取出,从常量区中取出1,进行相加,再次存回x空间。
//不同的是:前置++是先自增在备份,而后置++是先备份在自增。
//x的内容与1相加时会产生一个副本空间,将相加的结果保存在副本空间中。
int a =1;
a = a++;//a=1
for(int i = 1;i<100;i++){
    a = a++;
}//a=1
int m =1;
int n=2;
int sum=m++ + ++n - n-- - --m + n-- - --m;//1+3-3-1+2-0
//结果m=0,n=1,sum=2;

赋值运算:=,+=,-=,%=,/=

//如果赋值运算符右边是一个数,可能会发生类型转换
byte x =1;//自动转化。赋值运算
x+=2;//+与=在一起,将x与2相加后自动类型提升为3,=自动转化。赋值运算
x = x+2;//编译报错,类型从int转化为byte可能损失。算术运算
x =(byte)(x+2);//将x的变量空间的值取出,从变量区中取2,进行相加为int类型,结果重新
//返回存在x的变量空间内。

关系运算法:>,>=,<=,<,!=,==
(1)区分=和==的区别
=是赋值运算,将后面的结果存入左边的变量空间中内
==是比较运算,比较前面的元素与后面的元素是否一致
(2)比较运算符最终的结果true,false

逻辑运算
&逻辑与(条件均满足为1)、|逻辑或(条件均不满足为0)、^逻辑异或(相同为0,不同为1)、!逻辑非(取反)
&&(短路与)、||(短路或)
如果发生了短路,性能会稍微比较好点。

&&&区别:
&:条件均要判断
&&:如果第一个条件发生错误即短路,则后面的条件就不判断了
如果&&发生短路,性能会提高。

位运算(进制之间的转换)
&按位与、|按位或、^按位异或、~取反
<<按位左移(乘以2的位移次幂)、>>按位右移(除以2的位移次幂)

3&5=//转换成二进制按位计算后,将其转换为十进制

13.正数的原码、反码、补码一致,负数的反码等于原码除符号位按位取反,负数的补码等于反码加一

//反码+1=补码
~6=-7;
//-6的反码是多少?-7

计算机中不管是整数还是负数,存储的形式都是以补码形式存储的。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值