—————————— ASP.Net+Android+IOS开发、.Net培训、期待与您交流!——————————
关键字
定义:被java语言赋予特殊含义的单词;
特点:关键字中所有字母都是小写;
标识符
定义:在程序中自定义的一些名称
组成:26个大小写英文字母(a~z、A~Z)、0~9的数字、下划线“_”和美元符“$”的符号。
定义合法标识符的规则:
数字不可以开头。
不可以使用关键字。
java标识符的大小写严格区分。
注意:
在开发中,为了提高代码的阅读性,标识符的起名尽量要有意义。
标识符的命名规范:
包名:多个单词组成时所有字母都是小写。
如:xxyyzz.aa.bb
类、接口名:所有单词首字母大写。
如:XxYyZz
变量、函数名:第一个单词首字母小写,后面如果还有单词,就一律首字母大写。
如:xxYyZz
常量名:所有字母都用大写,若有多个单词,要用下划线“_”分割
如:XX_YY_ZZ
常量
常量:不能改变,有固定值。
分类:
整数
小数
布尔型
字符(用单引号’’标识)
字符串(用双引号””标识)
null (仅有null空值)
整数的四种表现形式:
二进制: 由0和1组成 满2进1
八进制: 0~7 满8进1
十进制: 0~9 满10进1
十六进制: 0~9、A~F(或a~f) 满16进1
进制与进制转换
进制:
为什么会有多进制?
更方便的表示数据。
八进制:以0开头,二进制的每三位代表一个数值
十六进制:以0x开头,二进制的每四位代表一个数值
规律:进制越大,表现形式越短。
进制转换:
十进制转二进制:
原理:除2取余数结果倒着记录
代码体现:Integer.toBinaryString(value);
二进制转十进制:
原理:二进制数乘以2^n的过程
比如:6的二进制转十进制
110 (2) = 6
1*2^0+1*2^1+1*2^2 = 0+2+4 = 6
二进制转十六进制:
原理:倒着数1 2 4 8规律,每四位代表一位
比如:01011010 = 0x5A
0101 1010 = 5 10
因为数字只能表示到9,所以最后结果为0x5A
二进制转八进制:
原理:倒着数1 2 4 规律,每三位代表一位
比如:00101010 = 052
000 101 010 = 0 5 2
负数的二进制:
例如:-6
原理:6的二进制数取反再+1
变量
什么时候定义变量?
当数据不确定,需要对数据进行存储时,就需要定义一个变量来完成存储动作。
变量的定义:将不确定的数据在内存中进行存储(需要在空间中开辟一个内存空间)。
定义变量的格式:
数据类型 变量名 = 初始化值;
如:int x = 4;
基本数据类型:
数值:
整数(long、int、short、byte)
小数(double、float)
字符:char
布尔:boolean
注意:
java中整数默认为int型,小数默认为double型。
练习代码:Demo01.java
/*
变量及基本数据类型的练习.
定义变量的格式:变量类型 变量名 = 初始化值;
*/
class Demo01
{
public static void main(String[] args)
{
// 整数值
byte b = 1;
System.out.println(b);
int i = 2;
System.out.println(i);
short sh = 3;
System.out.println(sh);
long l = 4L;
System.out.println(l);
// 小数值
float f = 1.0F;
System.out.println(f);
double d = 2.0;
System.out.println(d);
// 布尔值
boolean b1 = true;
System.out.println(b1);
}
}
类型转换
自动转换:小类型自动提升为大类型
强制转换:大类型强制转换为小类型
运算符
1. 算数运算符:+、-、*、/、%(取模/余数)、++(自增)、--(自减)
特殊应用:
+(字符串连接符)、++(a++或++a)
1%5 = 1
5%1 = 0
1%-5 = 1
-1%5 = -1
++a :先运算,再赋值
a++ :先赋值,再运算
2. 赋值运算符:=、+=、-=、\=、*=、%=
3. 比较运算符:<、>、==、<=、>=、!=
4. 逻辑运算符:
作用:用于连接布尔类型的表达式
表示:&(与)、|(或)、^(异或)、&&(短路与)、||(短路或)、!(非)
特点:
&:两边真,结果为真
只要有假,结果为假
|:两边假,结果为假
只要有真,结果为真
^:两边相同为假,不同为真
!:!true = false
!false = true
&和&&区别:
&:两边都参与运算
&&:左边为假,右边不参与运算
|和||区别:
|:同&
||:左边为真,右边不参与运算
5. 位运算(二进制运算):
作用:提高运算效率
表示:<<(左移)、>>(右移)、>>>(无符号右移)、&(与)、|(或)、^(异或)、!(非)、~(反码)
原理:
<<:乘以2的移动位数次幂
>>:除以2的移动位数次幂
>>与>>>区别:
>>:移动后补最高位用原来数据的最高位补
>>>:移动后最高位用0补
结论:
一个数异或另一个数两次还是原数。
如:7 ^ 4 ^ 4 = 7
6. 三元运算符
作用:简化条件语句的
表示:(条件表达式)?表达式1:表达式2
用法:当条件表达式结果为真,执行表达式1,否则执行表达式2.
转义字符:
\n:换行
\b:退格
\r:回车
\t:tab
特别用法:"\""(打印")、"\\"(打印\)、"\\n"(打印\n)
转义字符练习代码:Demo02.java
/*
转义字符练习
*/
class Demo02
{
public static void main(String[] args)
{
System.out.println("\\n"); // 打印\n
System.out.println("\""); // 打印"
System.out.println("\\"); // 打印\
}
}
变量交换练习代码:Demo03.java
/*
变量交换练习
*/
class Demo03
{
public static void main(String[] args)
{
int a = 5, b = 8;
System.out.println("原来 a = " + a + " , b = " + b);
// 方法1:定义第三方变量,用于临时存储变量改变的值
/*
int temp = a;
a = b;
b = temp;
// 方法2:无需第三方变量,原理:两数之和减去其中一个数等于另外一个数
// 局限于a ± b在int范围内。
a = a + b;
b = a - b; // 右边:5与8的和减去8等于5,赋值给b,这一步完成将a的值赋值给b
a = a - b; // 右边:13减去5等于8并赋值给a,完成将原来的b赋值给a
*/
// 方法3:无需第三方变量,用异或方法完成交换
// 原理:一个数异或另一个数两次等于原数
a = a ^ b;
b = b ^ a;
a = a ^ b;
System.out.println("交换后 a = " + a + " , b = " + b);
}
}
位运算练习代码:Demo04.java
/*
使用位运算获取十进制数的十六进制表现形式
*/
class Demo04
{
public static void main(String[] args)
{
int num = 60;
int n1 = num & 15; // 通过&15,获取60的最低四位
System.out.println((char)(n1-10+'A'));
int temp = 60 >>> 4; // 右移四位将要获取下一组四位
int n2 = temp & 15; // 对temp进行最低四位获取
System.out.println(n2);
}
}
程序流程控制:
判断结构:
格式1:
if (条件表达式){ 执行语句; }
格式2:
if (条件表达式){ 执行语句; }
else{ 执行语句; }
格式3:
if (条件表达式1){ 执行语句; }
else if(条件表达式2){ 执行语句;}
......
else { 执行语句; }
练习代码:Demo05.java
/*
需求:根据指定的月份打印相应的季节
*/
class Demo05
{
public static void main(String[] args)
{
// 3,4,5春季 6,7,8夏季 9,10,11秋季 12,1,2冬季
int x = 2;
if (x > 12 || x < 1) // 首先把错误数据(大于12或小于1)除掉
{
System.out.println("输入错误!");
}
else if (x >= 3 && x <= 5)
{
System.out.println(x + "月,春季");
}
else if (x >= 6 && x <= 8)
{
System.out.println(x + "月,夏季");
}
else if (x >= 8 && x <=11)
{
System.out.println(x + "月,秋季");
}
else {
System.out.println(x + "月,冬季");
}
}
}
选择结构:
格式:
switch(表达式)
{
case 取值1;
break;
case 取值2;
break;
case 取值3;
break;
......
default:
break;
}
注意:
switch中和表达式只接收4类型的值:byte、int、short、char
case中的选择不区分顺序,比如default可以放到case之上。
if 和 switch有时可以替换使用,使用switch较高效
练习代码:Demo06.java
/*
需求:根据指定的月份打印相应的季节
*/
class Demo06
{
public static void main(String[] args)
{
// 3,4,5春季 6,7,8夏季 9,10,11秋季 12,1,2冬季
int x = 8;
switch (x)
{
case 3:
case 4:
case 5:
System.out.println(x + "月,春季");
break;
case 6:
case 7:
case 8:
System.out.println(x + "月,夏季");
break;
case 9:
case 10:
case 11:
System.out.println(x + "月,秋季");
break;
case 12:
case 1:
case 2:
System.out.println(x + "月,冬季");
break;
default:
break;
}
}
}