JAVA基础

JAVA基础,第1张

JAVA基础

Day03

1、变量:在Java程序执行过程中,其值可以改变的量

定义变量的格式:

1、数据类型 变量名=初始化值;

2、数据类型 变量名;

变量名 = 初始化值;

定义变量注意事项:

1、作用域:

定义的变量只能在同一大括号内有效,出了这个大括号就无效了;

2、相同的作用域那不能定义两个同名变量;

3、变量在使用之前必须先赋值;

2、A:基本数据类型

整数类型

byte 1个字节 -2^7~2^7-1

short 2个字节 -2^15~2^15-1

int 4个字节 -2^31~2^31-1

long 8个字节 -2^63~2^63-1

注意事项:

1、整数默认是int类型,如果想定义一个long类型的数据必须在数字末尾加上大写或者小写的L;

2、小数默认的是double类型的数据,如果想定义一个float类型的数据必须在其末尾加上大写或者小写的F,推荐大写;

浮点类型

float 4个字节

double 8个字节

字符类型

char 2个字节

注意事项:定义char类型的数据单引号里面只能由一个字母;

布尔类型

Boolean 1个字节

B:引用数据类型

自动类型转换:

byte、short、char在执行运算的过程中会自动提升到int类型;

由大的数据类型接受小的数据类型会自动转换,不会报错;

强制类型转换:

由小数据类型接收大数据类型会报错,所以需要强制类型转换

格式:目标数据类型 变量名 = (目标数据类型)需要转换的数据;

面试题 byte b1=3,b2=4,b; b=b1+b2; b=3+4; 哪句是编译失败的呢?为什么呢? 答:b=b1+b2这句编译失败,以为byte、short、char类型的数据在参与运算时被转成int类型的数据, 而b是byte类型的数据,将int类型的数据不能赋给byte; 即1、变量相加首先会提升数据类型,然后再相加赋值,如果接收的数据类型范围小于计算结果后的数据类型范围,报错,不能赋值 2、常量相加,会先进行计算,计算完后看看在不在接收的数据类型范围内,如果在,直接赋值,如果不在,报错。

byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢? 有问题的,因为byte数据类型的范围是在-128~127之间,而130超出了范围。 做强制类型转换可以得到结果:byte b = (byte)130; 解析:数值在计算机中是以补码的形式参与运算的; byte的130=128+2二进制为 10000010 而byte转换为int类型数据以补码形式参加运算 原码:00000000 00000000 00000000 10000010 由于:首位为0,所以补码,反码,原码相同 补码:00000000 00000000 00000000 10000010 作截取 *** 作(因为int类型强制类型转换为byte类型数据只能保留一个字节):10000010 已知补码求原码 符号位 数值位 补码: 1 0000010 反码: 1 0000001 原码: 1 1111110 结果:11111110 转化为十进制为-126

3、运算符:

算数运算符:+,-,*,/,%

+用法:

1、当+两边是数字或者是数字和字符是执行的是加法 *** 作;

2、字符串与任何数值做加法连接的时候做的是字符串拼接 *** 作;

3、当加号两边其中是字符串的时候,做的是字符串拼接,拼接后是一个新的字符串

++用法:

当++在前的时候,变量先自增1,然后再赋值 ;当++在后的时候,变量先赋值,然后再自增1;

--用法:

当--在前的售后, 变量先自减1,然后再赋值 ;当--在后的时候,变量先赋值,然后再自减1 ;

int a = 4; int b = (a++)+(++a)+(a*10); 4 + 6 + 60 =70 a=5 a=6

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

a += 20; //这里实际上可以看作为a的值加上了一个20再赋值给a,但是不能完全等于 a = a + 20;

short s=1, s = s+1; short s=1, s += 1;这两个代码哪个有问题? 第一行有问题,byte,short,char类型的数据在参加数据运算是会被提升为int类型的数据,最后再将int类型的数据赋给short类型的明显不行; 第二行可以是因为s+=1;这一句已经做过强制类型转换相当于s=(short)(s+1);

比较运算符:==,>,=,

注意事项: 1、关系运算符的结果只能是Boolean,要么是true,要么是false; 2、关系运算符中的==不能少写,=是赋值,==才是关系运算符; 3、关系运算符中的结果只能用boolea类型的变量接收;

逻辑运算符:|,&,^,||,&&,!

逻辑运算符的两边放的是boolean类型的值,计算的结果也是一个boolean类型的值 &: 参与运算的时候,两边有false,则false,两边都做运算 |: 参与运算的时候,两边有true,则true,两边都做运算 ^: 参与运算的时候,相同为false,不同为true,两边都做运算 !: 将true变成false,false变成true &&: 短路与,结果和单个与结果一样,有false则false,但是执行的东西不一样, 当&&左边的表达式结果为false的时候,结果是false,右边不执行 ||: 短路或,结果和单个或结果一样,有true则true,但是执行的东西不一样, 当||左边是true的时候,右边不执行,结果是true.

位运算符:|,&,^,~,>,>>>

~ 运算:1变成0,0变成1 ^ 运算:相同则0,不同则1 | 运算:有1则1 & 运算:有0则0 位运算符: <<: 左移,二进制左移,右边用0补齐,多出来的丢弃 >>: 右移,最左边最高位是0用0补齐,最高位是1就用1补齐,多出来的丢弃。 >>>: 无符号右移,无论左边最高是0还是1,都用0补齐,多出来的丢弃。

三目运算符:(关系表达式)?表达式1:表达式2

三目运算符:又称之为三元运算符 格式:(关系表达式)?表达式1:表达式2; 如果关系表达式的结果为true,运算后的结果是表达式1; 如果关系表达式的结果为false,运算后的结果是表达式2; 注意事项: 1、三目运算符表达式的结果数据类型由三目运算符表达式1和表达式2中最大的数据类型决定的。 2、关系表达式一定只能是boolean类型

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5697531.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存