Java变量、数据类型、运算符。这些你都知道吗,知道如何从零基础学好java吗,零基础学习java的技巧有哪些呢?
变量
变量:存储数据的容器
变量中存储的数据是可以更换的
变量定义:变量类型 + 变量名
java中的变量
[1]java中的变量存在内存中(运行速度快,存储空间有限8G)
[2]变量在内存中需要有名字和类型
[3]java中的变量需要先声明类型然后才能使用(强类型)
[4]变量的类型一旦声明其类型不允许改变
注意:变量类型一旦确定不能改变其值得类型,但是可以改变值
String sex ="男"//sex = 1(错误) 错误: 不兼容的类型: int无法转换为String
boolean b1 = true//b1 = 1(错误) 错误: 不兼容的类型: int无法转换为boolean
在Java中true和1关系是不相等的(c语言中true和1关系相等)
Java中的命名规则:
类名、方法名和变量名都可以用英文(a-zA-Z)、数字(0-9)、下划线(_)和美元符($)组成但不能用数字开头
类名的首字母要大写,方法名和变量名的首字母要小写
如果类名、方法名和变量名由多个单词组成,之后的每个单词首字母大写
例如:类名"HelloWorld"、方法名"main"
常量:数据不可改变的量
常量所有字母都大写,如果由多个单词组成两个单词之间用下划线连接
注意:类名、方法名、变量名和常量名都要做到见名知意。
数据类型
# 1.Java中的基本数据类型
Java中的数据类型:
一、引用类型
除了基本数据类型以外的类型都是引用类型。
Java是面向对象的编程语言,一切皆对象
对象是Object代表东西
对象类型就是引用类型
二、基本数据类型(8种)
整数类型(整型)
|--字节类型byte8位计算机种存储数据的最小单位
|--短整型short 16位
|--整型int32位整数类型默认使用int
|--长整型long64位
小数类型(浮点型)
|--单精度浮点型float32位
|--双精度浮点型double64位浮点数类型默认使用double
字符类型char16位
布尔类型boolean
Java提供了8中基本数据类型的包装类,将基本数据类型数据封装起来,并听过一些功能方法
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean
(1).boolean:
true:真
false:假
(2).整型:
(a).整型变量的取值范围:
byte:-128 - 127
short:-32768 - 32767
int:-2^31 ~ 2^31-1
long:-2^63 ~ 2^63-1
推导公式:一个整型变量的2进制位数为n,那么其取值范围是:-2^(n-1) - 2^(n-1)-1
n-1的含义是:在n个2进制位当中,我们使用最高位(2进制中最左边的第一位)表示正(0)负(1),其余n-1位表示取值
0000 1011:正整数
1111 0110:负整数
123 = 3*1 + 2*10 + 1*100 = 1*10^2 + 2*10^1 + 3*10^0
1010 = 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 10
0000 0000 = +0
1000 0000 = -0
注意:计算机中使用补码表示整数:
正整数的补码就是源码
负整数的补码等于其绝对值的源码按位取反,末位加一
(b).2进制转换10进制的问题:
例题:
5:0000 0101
-5:
取绝对值:5 ==> 000 0101
那位取反:111 1010
末位加一:111 1011
添加符号:1111 1011
-12:
000 1100
111 0011
111 0100
1111 0100
1111 1000:
末位减一:111 0112 - 1 = 111 0111
按位取反:000 1000 = |8| = -8
(c).整数能够表示的的内容:
10进制:0~9
2进制:0b开头,0~1
8进制:0开头,0~7
16进制:0x开头,0~9,A~F
(d).long型存储数据的注意事项
long型存储数据的表示方式:在整数后面加L或者l,推荐使用L
为什么:Java规定所有的整数常量的默认类型是int类型,只有在特殊标记的时候,才会使用long型进行存储
(e).char型的取值范围:
char * 1 = 2进制 * 16
注意:字符型是没有正负位的,所以char的16个2进制位全部用来表示取值:0~2^16-1
(3).浮点型:
(a).浮点型常量的默认类型:
默认类型是double,如果希望Java使用32个2进制位保存一个float变量,需要在浮点型常量的后面添加F或者f
(b).浮点型能够保存的数据类型:
小数:3.1415926
科学计数法:999999999999999999999999999999999999999999999.0 == 1.0E45
正负无穷:
正无穷:Infinity,在浮点除法运算当中,分母是0.0,分子是正浮点值
负无穷:-Infinity,在浮点除法运算当中,分母是0.0,分子是负浮点值
非数:
NaN:非数不是任何数值,不能够和其他数值进行大小比较,没有意义;非数只要参与运算,表达式最终的结果一定是NaN
遇见异常:
异常名称:
1
java.lang.ArithmeticException: / by zero
异常信息:/ by zero
出现原因:使用整数0作为分母
解决方案:
1.不使用整数0作为分母
2.将分母的类型改变为浮点值类型
(4).字符型:
(a).字符:char ch1 = 'a'; 在Java中使用''引起的都是字符;使用""引起的都是字符串
(b).整数:char ch2 = 20013; 因为字符最终保存的是整数,所以char型变量可以直接接受整数赋值
(c).Unicode编码:char ch3 = '\u4E2D' ==> '\uXXXX':XXXX表示4个16进制取值
(d).转义字符:\:在字符的两种含义之间进行切换
一个字符在一篇代码中的含义:
1.这篇代码的组成部分
2.作为显示输出
常见的转移字符:
转义字符
作用
\n
换行
\r
光标回行首
\t
制表符(大空格)
\b
回删
转义字符还能够如下使用:\' \" \\
.......................................................................................................................................
# 2.强制类型装换和表达式自动类型提升
1.强制类型转换:
定义:
指的是将一个取值范围较大的变量存储到一个取值范围较小的变量中(整型)
或者将一个精度范围较高的变量存储到精度范围较低的变量中(浮点型)
语法规范:
目标类型 目标变量 = (目标类型) 原始变量;
强制类型转换可能导致的问题:
(a)精度溢出:
double -> float:只是损失一部分精度
浮点 -> 整型:精度全部损失,而且不会进行四舍五入(精度一刀切)
(b)值溢出:
0000 0000 0000 0000 0000 00001000 0000:int 128
1000 0000:byte -128
值溢出实际上指的是取值范围小的整型变量在保存取值范围大的整型变量的值的时候,存不下的2进制位产生溢出
总结:强转有风险,使用需谨慎
2.表达式的自动类型提升:
表达式:10 + 5.5 * 3.14f / 10000L + 'a'
表达式自动类型提升讨论的是一个表达式最终运算结果的类型是什么类型:
找老大原则:
(1).如果表达式中存在浮点值,那么运算结果的类型一定是浮点值类型,有double找double,没double找
(2).如果表达式中没有浮点值只有整型值,那么最终运算的结果一定是整型值,参与运算的整型值当中,舍得取值范围大,最终运算结果的类型就是什么,long -> int -> short -> byte
(3).如果char型变量参与运算,最终的运算结果一定不是char,是int
........................................................................................................................................................................................
运算符
# 3.Java中的运算符
定义:表示一个运算数自己或者多个运算数之间关系的符号
Java中运算符的分类:算术运算符、位运算符、赋值运算符、关系运算符、逻辑运算符、三目运算符、类型相关运算符
# 4.算术运算符
加法运算:+
减法运算:-
乘法运算:*
除法运算:/
取余运算:%:注意对浮点值取余时得到的极小值
自增运算:++(单目)
定义:将整数以步长为1进行自增长
i++:先用后加
1.将i中的值取出来
2.将取出来的值进行“使用”
3.将取得的值自增1
4.将自增1之后的结果赋回给i这个变量
++i:先加后用
1.将i中的值取出来
2.将取得的值自增1
3.将自增1的结果赋回给变量i
4.使用变量i中现存的值,就是自增1之后的值
用:①参与四则运算②打印输出
自减运算:--(单目)
# 5.位运算符
与运算:&:全1为1,有0则0
或运算:|:有1为1,全0为0
取反运算:~:01互换
异或运算:^:相同为0,不同为1
左移运算:<<
1.左移运算,空位在右侧产生,用0补齐
2.左移运算,左移一位,相当于10进制整数乘以1次2
3.左移运算,有可能改变被位移运算数的正负
右移运算:>>
1.右移运算,空位在左侧产生,用符号位补齐
2.右移运算,右移一位,相当于10进制整数除以1次2
3.右移运算,不可能改变原来运算数的正负
无符号右移运算:>>>
1.无符号右移,空位在左侧产生,空位统一用0补齐
2.无符号右移,对于正整数来说,移动一位,和一般的右移运算是一样的,都是相当于乘以2
3.无符号右移,得到的永远是正整数,因为符号位永远是0
注意:
1.所有位运算符都不适用于浮点值
2.Java中的位移运算的移动位数,实际上是对32(64)取余的结果
3.使用与运算的“探针法”可以用来判断某个数值的某一个2进制位是不是0,探针实际上就是一个2进制位只有1个1的整数
那个1就是探针
例题:
给定两个int型整数a和b,比较这两个整数之间的2进制位中,有多少位不相同
# 6.赋值运算符
传统的赋值运算符:=
赋值运算符的扩展:
+= -= *= /= %= &= |= >>= <<= >>>=
赋值运算符扩展的规则:
1.被扩展的运算符,必须是双目运算符
2.被扩展的运算符,其返回值类型一定是数值型
#7.关系运算符
< <= == != >= >
注意:==和!=是可以用在对象(引用数据类型变量)之间的比较的,此时比较的是两个对象的内存地址
# 8.逻辑运算符
与运算:&:同真为真,一假全假
或运算:|:有真为真,同假为假
非运算:!:真假互换
异或运算:^:相同为假,不同为真
短路与运算:&&:同真为真,一假全假
如果相与的两个条件中,第一个条件直接就是false,那么整个与运算表达式的结果一定的false,后序条件不执行
短路或运算:||:有真为真,同假为假
如果相或的两个条件中,第一个条件直接就是true,那么整个或运算表达式的结果一定的true,后序条件不执行
注意:实际开发中,使用最多的是&&和||,因为这两个运算符可以提升条件判断表达式的运算效率
#9.三目运算符
Java中的三目运算符:?:
判断条件成立吗 ? 如果条件成立,返回这个值 : 如果条件不成立,返回这个值;
注意:三目运算符的使用是允许嵌套的
# 10.运算符的结合性
运算符的结合性:运算符中,运算数参与运算的顺序
在Java中,所有的单目、赋值和三目运算符都是从右向左进行结合的,其余运算符都是从左向右进行结合的
# 11.运算符的优先级
免责声明:本站文章均由入驻起航学习网的会员所发或者网络转载,所述观点仅代表作者本人,不代表起航学习网立场。如有侵权或者其他问题,请联系举报,必删。侵权投诉
(责任编辑:IT培训网)