一、标识符、关键字
Java中标识符的定义格式由字母、数字、_(下划线),$所组成,其中不能重复,不能以数字开头,不能是Java中的关键字,而且每一个标识符都要有自己的意义,如StudentName,表示的是学生姓名。
注意:标识符区分大小写。
提示:标识符最好永远用字母开头,而且尽量不要包含其他的符号。
Java中的关键字
abstract |
assert |
boolean |
break |
byte |
case |
catch |
char |
class |
continue |
const |
default |
do |
double |
else |
extends |
enum |
final |
finally |
float |
for |
goto |
if |
implements |
import |
instanceof |
int |
interface |
long |
native |
new |
package |
private |
protected |
public |
return |
short |
static |
synchronized |
super |
strictfp |
this |
throw |
throws |
transient |
try |
void |
volatile |
while |
二、变量
1、定义:变量是内存中装载数据的小盒子,你只能用它来存数据和取数据。
计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为“比特位”,通常用小写的字母b表示。
而计算机最小的存储单元叫“字节(byte)”,通常用大写字母B表示,字节是由连续的8个位组成。
1B(字节) = 8bit
1KB = 1024B
2、变量的基本类型(4类8种)
变量必须要有明确的类型,什么类型的变量装载什么类型的数据。
Java中基本类型一共4类,把这4类展开后共8种基本类型。
java中默认的整数类型是int类型
在Java中整数常量如果不在-2147483648~2147483648之间就必须添加“L”后缀(小写的也可以,但建议使用大写),在-2147483648~2147483648之间的也可以添加“L”后缀。
添加了“L”后缀的整数常量都是long类型的,例如:100L、12345678901L都是long类型的常量。
java中默认的浮点类型是double类型
float类型常量必须添加“F”后缀(小写也可以,但建议使用大写)
除了8大基本类型(byte,short,char,int,long,float,double,boolean),其他类型皆为引用类型。
例如:String,定义字符串
3、定义变量
/* 变量定义格式: 数据类型 变量名 = 变量值; */ public class Variable { public static void main(String[] args) { int a = 10;//定义整型a,赋值10 double b = 3.14;//定义浮点类型,变量名b,变量值3.14 char c = 'z';//定义字符类型,变量名c,变量值'z' String s = "i love java";//定义引用类型,变量名s,变量值"i love java" a = 20; System.out.println(a); } }
4、变量使用的注意事项
1、 变量定义后可以不赋值,使用时再赋值。不赋值不能使用。
public static void main(String[] args) { int x; x = 20; //为x赋值20 System.out.println(x);//读取x变量中的值,再打印 }
2、变量使用时有作用域的限制
public static void main(String[] args) { int x = 20; { int y = 20; } System.out.println(x);//读取x变量中的值,再打印 System.out.println(y);//读取y变量中的值失败,失败原因,找不到y变量,因为超出了y变量作用范围,所以不能使用y变量 }
3、变量不可以重复定义。
public static void main(String[] args){ int x = 10; double x = 5.5;//编译失败,变量重复定义 }
5、 数据类型转换
不同类型的变量是否可以在一起运算呢?答案是可以的,但要先进行类型转换再运算。
遵循原则:
范围小的数据类型值(如byte),可以直接转换为范围大的数据类型值(如int);
范围大的数据类型值(如int),不可以直接转换为范围小的数据类型值(如byte)
将各种数据类型按照数据范围从小到大依次列出:
byte -> short -> int -> long -> float -> double
一、自动类型转换
表示范围小的数据类型转换成范围大的数据类型,这种方式称为自动类型转换
自动类型转换格式:
范围大的数据类型 变量 = 范围小的数据类型值;
double d = 1000; 或 int i = 100; double d2 = i;
二、强制类型转换
表示范围大的数据类型转换成范围小的数据类型,这种方式称为强制类型转换
强制类型转换格式:
范围小的数据类型 变量 = (范围小的数据类型) 范围大的数据类型值;
int i = (int)6.718; //i的值为6 或 double d = 3.14; int i2 = (int)d; //i2的值为3
二、运算符
1、算数运算符
运算符是用来计算数据的符号。数据可以是常量,也可以是变量。被运算符操作的数我们称为操作数。
注意下列事项:
- 加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串,加括号会先运算括号内。
- 除法“/”当两边为整数时,取整数部分,舍余数。当其中一边为浮点型时,按正常规则相除。
- “%”为整除取余符号,小数取余没有意义。结果符号与被取余符号相同。
- 整数做被除数,0不能做除数,否则报错。
2、算数运算符 ++ -- 的使用
运算符单独使用: ++,--,不参与运算操作时,运算符前后位置导致的运算结果是一致的。
int a = 3; int b = 3; ++a;//++在a前后,结果都为4 b--;//--在前后,结果都为2 System.out.println(a);//4 System.out.println(b);//2
运算符参与运算:
++,-- 运算符后置时,先使用变量a原有值参与运算操作,运算操作完成后,变量a的值自增1或者自减1;
++,--运算符前置时,先将变量a的值自增1或者自减1,然后使用更新后的新值参与运算操作。
int a = 3; int b; int c = 3; int d; b = a++ + 10; d = ++c + 10; System.out.println(a);//4 System.out.println(b);//13 System.out.println(c);//4 System.out.println(d);//14
3、赋值运算符
注意:诸如+=这样形式的赋值运算符,会将结果自动强转成等号左边的数据类型。
4、比较运算符
比较运算符,又叫关系运算符,它是用来判断两个操作数的大小关系及是否相等关系的,结果是布尔值true或者false。
5、逻辑运算符
逻辑运算符,它是用于布尔值进行运算的,运算的最终结果为布尔值true或false。
逻辑运算符通常连接两个其他表达式计算后的布尔值结果
注意:&和&&,在结果上没有区别。
- 短路与&&,当左边为false时,则右边不执行判断,结果为false,效率高于&
- 短路或||,当左边为true时,则右边不执行判断,结果为true,效率高于&
- 逻辑非! : 参与运算的数据,原先是true则变成false,原先是false则变成true。
例题:
/*第一题*/ int x = 1,y = 1; if(x++==2 & ++y==2) // false&true { x =7; } System.out.println("x="+x+",y="+y); // x=2,y=2 --------------------------------------------------- /*第二题*/ int x = 1,y = 1; if(x++==2 && ++y==2) { x =7; } System.out.println("x="+x+",y="+y); //x=2,y=1 --------------------------------------------------- /*第三题*/ int x = 1,y = 1; if(x++==1 | ++y==1) t|f { x =7; } System.out.println("x="+x+",y="+y); // x=7 y=2 --------------------------------------------------- /*第四题*/ int x = 1,y = 1; if(x++==1 || ++y==1) t { x =7; } System.out.println("x="+x+",y="+y); // x=7 y=1
6、三元运算符
格式:
(条件表达式)?表达式1:表达式2;
三元运算符运算规则:
先判断条件表达式的值,若为true,运算结果为表达式1;若为false,运算结果为表达式2。
7、运算符优先级
当多个运算符一起使用的时候,容易出现不清晰先后运算顺序的问题,
下图是每种运算符的优先级,按照运算先后顺序排序(优先级相同的情况下,按照从左到右的顺序依次运算)
例:
int a = 5; int b = 3; int c = 1; int n2 = (a>b && b>c) ? (c++) : (++c);
这段代码运算执行顺序我们也写一下:
1.小括号优先级高,我们先运算第一组小括号中的代码
1.1. 比较运算符”>” 优先级大于 逻辑运算符”&&”
先执行 a>b,得到结果true;
再执行 b>c,得到结果true;
最后执行 a>b的结果 && b>c的结果,即 true && true, 结果为true
2.三元运算符中的条件判断结果为true,返回表达式1的结果 c++
先将变量c的原有值赋值给变量n2,即n2值为1;
再将变量c的值自增1,更新为2。