---------------------- android培训、java培训、期待与您交流! ----------------------
基础语法-变量与运算符
1.关键字:
关键字的定义和特点
定义:被Java语言赋予了特殊含义的单词
特点:关键字中所有字母都为小写
用于定义数据类型的关键字
classinterfacebyteshortint
long floatdoublecharboolean
void
用于定义数据类型值的关键字
true,false,null
用于定义流程控制的关键字
if,else,switch,case,default
while,do,for,break,continue
return
用于定义访问权限修饰符的关键字
privateprotectedpublic
用于定义类,函数,变量修饰符的关键字
abstract,final,static,synchronized
用于定义类与类之间关系的关键字
extends,implements
用于定义建立实例及引用实例,判断实例的关键字
new,this,super,instanceof
用于异常处理的关键字
try,catch,finally,throw,throws
用于包的关键字
package,import
其他修饰符关键字
nativestrictfptransientvolatileassert
2.标识符
在程序中自定义的一些名称。
由26个英文字母大小写,数字:0-9 符号:_ $ 组成
定义合法标识符规则:1,数字不可以开头。
2,不可以使用关键字。
Java中严格区分大小写。
注意:在起名字的时,为了提高阅读性,要尽量有意义。
Java中的名称规范:
包名:多单词组成时所有字母都小写。
xxxyyyzzz
类名接口名:多单词组成时,所有单词的首字母大写。
XxxYyyZzz
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。
xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接。
XXX_YYY_ZZZ
3.注释:用于注解说明解释程序的文字就是注释。提高了代码的阅读性。
Java中的注释格式:单行注释:格式: //注释文字
多行注释:格式: /* 注释文字 */
文档注释:格式:/** 注释文字 */
1.对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行。
2.对于文档注释,是java特有的注释,其中注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。
3.注释是一个程序员必须要具有的良好编程习惯。
4.初学者编写程序可以养成习惯:先写注释再写代码。
5.将自己的思想通过注释先整理出来,在用代码去体现。
6.因为代码仅仅是思想的一种体现形式而已。
代码示例:
/**
这是我的Hello World程序。
@author 小强
*/
class Demo{
/*
这是主函数,是程序的入口
它的出现可以保证程序的独立运行,
*/
public static void main(String[] args) {
//这是输出语句用于将括号内的数据打印到控制台。
System.out.println("Hello World");
}
}
4.常量与变量
常量表示不能改变的数值。
Java中常量的分类:
1,整数常量。所有整数
2,小数常量。所有小数
3,布尔型常量。较为特有,只有两个数值。true false。
4,字符常量。将一个数字字母或者符号用单引号( ' ' )标识。
5,字符串常量。将一个或者多个字符用双引号标识。
6,null常量。只有一个数值就是:null.
对于整数:java有三种表现形式。
十进制:0-9 ,满10进1.
八进制:0-7 ,满8进1. 用0开头表示。
十六进制:0-9,A-F,满16进1. 用0x开头表示。
进制的基本转换
十进制 二进制 互转
十进制转成二进制 除以2取余数
二进制转成十进制 乘以2的幂数
十进制 八进制 互转:将二进制数表现形式每三位取出一个数,取三次即是其八进制数。
十进制 十六进制 互转:将二进制数表现形式每四位取出一个数,取两次即是其八进制数。
负数的二进制表现形式
对应的正数二进制取反加1
变量:
1.变量的概念:
内存中的一个存储区。
该区域有自己的名称(变量名)和类型(数据类型)
该区域的数据可以在同一类型范围内不断变化
2.为什么要定义变量?
用来不断的存放同一类型的常量,并可以重复使用
3.使用变量注意:
变量的作用范围(一对{}之间有效)
初始化值
4.定义变量的格式:数据类型 变量名 = 初始化值;
注:格式是固定的,记住格式,以不变应万变。
理解:变量就如同数学中的未知数。
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间
数据类型-|基本数据类型-|数值型- |整数类型(byte-8位,short-16位,int-32位,long-64位)
||浮点类型(float-32位,double-64位)
||字符型-|(char-8位)
||布尔型-|(boolean)
|引用数据类型- |类(class)
||接口(interface)
||数组([])
整数默认:int 小数默认:double
float和long在使用时需要声明指定的类型,如:float a=0.0f,long b=12l;
1.byte是JAVA中最小的数据类型,它在内存中占8位(8个bit),取值范围从-128到127
2.short类型在内存中占2个字节,取值范围从 -32768到32767
3.char类型在内存中占2个字节。表示一个字符,也可以使用ASCII码范围内的值来给char型
的变量赋值。由于字符在内存中的取值不存在负数范围,所有取值范围从 0 到 65535
例如:赋值:char i = ‘a’; 或者 char i = 97;
4.int型在内存中占4个字节。取值范围从 -2147483648 到 2147483647赋值:int i = 10;
5.float型在内存中占4个字节。取值范围从 -3.4E38 到 3.4E38赋值:float i = 1.0f;
6.long型在内存中占8个字节。取值范围从 -9223372036854775808 到 9223372036854775807
7.double 型在内存中占8个字节。取值范围从 -1.7E308 到 1.7E308
8.单个boolean型的变量在内存中占1/8个字节,因为boolean型变量只有两个值,true和 false,也就是计算机里面的0和1,0代表true,1代表flase,用1位代替即可,而一个 byte占8位,所以boolean型变量在内存中只占1/8个字节
注意:
1.JAVA中所有的数字变量都是有符号(正负)的
2.带有小数点的数字变量默认都为double型
3.所占字节数小的数字型变量赋值给所占字节数比它大的类型时不用强制类型转换,此时是
自动转型。
4.int型变量赋值给char型变量时,JVM会以int型变量值到ASCII码表中查找出所对应的
字符,再赋值给char型变量。反之也是。但是遵循第4条规则
2)JAVA中,非简单数据类型的类型都是引用数据类型
byte的最小值:-128
byte的最大值:127
short的最小值:-32768
short的最大值:32767
int的最小值:-2147483648
int的最大值:2147483647
long的最小值:-9223372036854775808
long的最大值:9223372036854775807
float的最小值:1.4E-45
float的最大值:3.4028235E38
double的最小值:4.9E-324
double的最大值:1.7976931348623157E308
自动类型转换(也叫隐式类型转换)
强制类型转换(也叫显式类型转换)
类型转换的原理
什么时候要用强制类型转换?
表达式的数据类型自动提升
所有的byte型、short型和char的值将被提升到int型。
如果一个操作数是long型,计算结果就是long型;
如果一个操作数是float型,计算结果就是float型;
如果一个操作数是double型,计算结果就是double型。
算术运算符:
算术运算符的注意问题
如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数就另当别论。
对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。
例如:int x=3510;x=x/1000*1000; x的结果是?
“+”除字符串相加功能外,还能把非字符串转换成字符串 ,例如:System.out.println("5+5="+5+5);//打印结果是?
符号:
= , +=, -=, *=, /=, %=
示例:
int a,b,c; a=b=c =3;
int a = 3; a+=5;等同运算a=a+5;
思考:有什么区别?
short s = 3;
s=s+2;运算后进行类型提升,装不进short类型型中,编译失败
s+=2; 在运算的过程中进行类型转换,编译可以通过。
逻辑运算符
逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。
位运算符:位运算是直接对二进制进行运算。
运算符运算范例
<<左移3 << 2 = 12 --> 3*2*2=12
>>右移3 >> 1 = 1 --> 3/2=1
>>>无符号右移3 >>> 1 = 1 --> 3/2=1
&与运算6 & 3 = 2
|或运算6 | 3 = 7
^异或运算6 ^ 3 = 5
~反码~6 = -7
位运算符的细节:
<<空位补0,被移除的高位丢弃,空缺位补0。
>>被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。
>>>被移位二进制最高位无论是0或者是1,空缺位都用0补。
&二进制位进行&运算,只有1&1时结果是1,否则是0;
|二进制位进行 | 运算,只有0 | 0时结果是0,否则是1;
^任何相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0。不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1
结论:<<左移其实就是乘以2的移动的位数次幂。
>>右移其实就是除以2的移动的位数次幂。
>>被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。
>>>被移位二进制最高位无论是0或者是1,空缺位都用0补。
^:一个数异或同一个一个数两次,结果还是那个数。
练习:
1.最有效率的方式算出2乘以8等于几?2<<3;
2.对两个整数变量的值进行互换(不需要第三方变量)
第一种方式:有局限性,如果数值过大会超出范围。
n=n+m;
m=n-m;
n=n-m;
第二种方式:
n=n^m;
m=n^m;//(n^m)^m
n=n^m;//n^(n^m)
三元运算符:
格式
(条件表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
示例:
获取两个数中大数。
int x=3,y=4,z;
z = (x>y)?x:y;//z变量存储的就是两个数的大数。
三元运算符是if else结构的简写形式,变量=(条件表达式)?表达式1:表达式2;
三元运算符:
好处:可以简化代码。
弊端:因为是一个运算符,所以运算完必须要有一个结果。
---------------------- android培训、java培训、期待与您交流! ----------------------