-
内存中的一个存储区域
-
该区域有自己的名称(变量名)和类型(数据类型)
-
该区域的数据可以在同一类型范围内不断变化
-
定义变量可以不断的存放同一类型的常量,并可以重复使用
-
使用变量时注意:
- 变量的作用范围,在一对{ }之间有效;
- 初始化值;
-
定义变量的格式:
-
按所属的数据类型划分:基本数据类型变量、引用数据类型变量
-
按被声明的位置划分:局部变量(方法或语句块内部定义的变量)、成员变量(方法外部、类的内部定义的变量)
3-标识符:
标识符:java对包、类、方法、参数、变量等要素命名时使用的字符序列称为标识符。
命名规则:
- 由字母、数字、下划线( _ )、美元符号( $ )组成
- 不能数字开头
- 严格区分大小
- 长度无限制
- 不能是java的关键字和保留关键字
命名习惯:驼峰命名法、见名知意、以单词或单词组合来命名
- 合法标识符,如vince、user_name、$abc_123、_userName
- 非法标识符,如2userName、user#Name、hello 大卫、class
Java中的名称规范:
- 包名:多单词组成时所有字母都小写;xxxyyyzzz
- 类名/接口名:多单词组成时,所有单词的首字母大写;XxxYyyZzz
- 变量名和函数名:多个单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写;xxxYyyZzz
- 常量名:所有字母都大写。多个单词时每个单词用下划线连接;XXX_YYY_ZZZ
4-关键字
关键字:被Java语言赋予了特殊含义的单词。
特点:关键字中所有字母为小写。
用于定义数据类型的关键字 | ||||
class | interface | byte | boolean | char |
int | short | long | float | double |
void |
|
|
|
|
用于定义数据类型值的关键字 | ||||
true | false | null |
|
|
用于定义流程控制的关键字 | ||||
if | for | else | switch | case |
while | do | break | continue | default |
return |
|
|
|
|
用于定义访问权限修饰符的关键字 | ||||
private | protected | public |
|
|
用于定义类、函数、变量修饰符的关键字 | ||||
abstract | final | static | synchronized |
|
用于定义类与类之间关系的关键字 | ||||
extends | implements |
|
|
|
用于定义建立实例与引用实例,判断实例的关键字 | ||||
new | this | super | instanceof |
|
用于异常处理的关键字 | ||||
catch | try | finally | throw | throws |
用于包的关键字 | ||||
package | import |
|
|
|
其他修饰符的关键字 | ||||
assert | volatile | const | enum | strictfp |
transient | native |
|
|
|
5-运算符与优先级
运算符
|
描述
|
示例
|
结果
|
+
|
加法
|
5+5
|
10
|
-
|
减法
|
5-3
|
2
|
*
|
乘法
|
2*3
|
6
|
/
|
除法
|
10/3
|
3
|
%
|
取余(取模)
|
10%3
|
1
|
++
|
自增(前、后)
|
|
|
--
|
自减(前、后)
|
|
|
public class Test3{
public static void main(String[] args){
int a = 1;
int b = 2;
int c = a + b;
System.out.println(c);
a = 10;
b = 3;
System.out.println(a/b);
a = b++; //先赋值后自增1 —> 先把b的值赋给a,然后a再+1
System.out.println("a="+a);
System.out.println("b="+b);
//结果:a = 3,b = 4
a = ++b; //先自增1后赋值 —> 先把b+1,然后再把b的值赋给a
System.out.println("a="+a);
System.out.println("b="+b);
//结果:a = 5,b = 5
int x = 1;
int y = 2;
y = x + y - (++y);
System.out.println("x="+x);
System.out.println("y="+y);
//字符串数据和任何数据使用+ 都是相连接,最终都会变成字符串
//String m = "你"+"好";
System.out.println("你"+"好");
}
}
2) 赋值运算符
运算符
|
描述
|
示例
|
结果
|
=
|
赋值
|
a=10
|
a=10
|
+=
|
加等于
|
a=1,a+=3
|
a=4
|
-=
|
减等于
|
a=6,a-=3
|
a=3
|
*=
|
乘等于
|
a=1,a*=3
|
a=3
|
/=
|
除等于
|
a=10,a/=3
|
a=3
|
%=
|
模等于
|
a=10,a%=3
|
a=1
|
public class Test4{
public static void main(String[] args){
short s = 1;
//s = s + 1; //两次运算,编译失败,因为s会被提升为int类型,运算后的结果还是int类型,无法赋值给short类型,容易丢失精度。
s+=1; //一次运算,编译通过,因为+=运算符在给s赋值时,自动完成了强转操作。
System.out.println(s);
}
}
运算符
|
描述
|
示例
|
结果
|
==
|
相等于
|
a=10,a==8
|
false
|
!=
|
不等于
|
a=1,a!=3
|
true
|
<
|
小于
|
a=6,a<3
|
false
|
>
|
大于
|
a=10,a>3
|
true
|
<=
|
小于等于
|
a=10,a<=3
|
false
|
>=
|
大于等于
|
a=10,a>=3
|
true
|
import java.util.Scanner; //接收键盘输入的工具类
public class Test5{
public static void main(String[] args){
int x = 1;
int y = 2;
System.out.println(x == y);
System.out.println(y >= x);
//创建一个键盘输入的工具
Scanner input = new Scanner(System.in);
System.out.println("请输入一个整数");
int x1 = input.nextInt(); //从键盘接受一个整数
System.out.println(x1);
System.out.println("请输入一个字符");
String s = input.next();
System.out.println(s);
}
}
4) 逻辑运算符
运算符
|
描述
|
示例
|
结果
|
&
|
与
|
false & ture
|
false
|
|
|
或
|
false & ture
|
true
|
^
|
异或
|
false ^ ture
|
true
|
!
|
非
|
!false
|
true
|
&&
|
短路与
|
false && ture
|
false
|
||
|
短路或
|
false || ture
|
true
|
public class Test6{
public static void main(String[] args){
boolean x = true;
boolean y = false;
System.out.println(x & y);
//与运算,分别计算表达式两边的结果再做&运算,只有两边都为ture,结果才为true,否则为false
System.out.println(y | x);
//或运算,分别计算表达式两边的结果再说|运算,只要有一个为true,结果就为true,两边都为false菜薳false
System.out.println(y ^ x);
//异或运算,两边相同为false,两边不同为true
System.out.println(!x);
//非运算
System.out.println(x && y);
//短路与
System.out.println(x || y);
//短路或
}
}
5) 位运算符
二进制数 |
运算
|
结果
|
01001111
|
按位取反 ~
|
10110000
|
11001011
& 01101101
|
按位与 &
|
01001001
|
11001011
| 01101101
|
按位或 |
|
11101111
|
11001011
^ 01101101
|
按位异或 ^
|
10100110
|
import java.util.Scanner;
public class Test12{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("请输入第一个成绩:");
int score = input.nextInt();
//String表示一个字符串类型,不是基本数据类型
String result = score>=60?"及格":"不及格";
System.out.println(result);
}
}
6个练习题:
import java.util.Scanner; //接收键盘输入的工具类
public class Test7{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("请输入圆柱体的高");
double h = input.nextDouble(); //从键盘接受一个整数
System.out.println("请输入圆柱体的底面半径");
double r = input.nextDouble(); //从键盘接受一个整数
double S = 3.14*h*r*r;
System.out.println(S);
}
}
2、定义一个5位数,求各个位上的数字之和?
public class Test8{
public static void main(String[] args){
int num = 12654;
int w = num/10000;
int q = num/1000%10;
int b = num/100%10;
int s = num/10%10;
int g = num%10;
int Sum = g+s+b+q+w;
System.out.println(w);
System.out.println(q);
System.out.println(b);
System.out.println(s);
System.out.println(g);
System.out.println(Sum);
}
}
3、根据天数(46)计算周数和剩余的天数,天数是通过键盘输入的
import java.util.Scanner;
public class Test9{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("请输入一个天数:");
int day = input.nextInt();
System.out.println("周数是:"+(day/7));
System.out.println("剩余天数是:"+(day%7));
}
}
4、&和 &&的区别?
public class Test10{
public static void main(String[] args){
//&:在逻辑运算时分别计算表达式两边的结果,再做&运算;
// 在位运算时,&表示按位与。
//&&:短路与运算,先算左边的表达式,若结果是false,则不用计算右面表达式,结果直接返回false;
// 若结果是true,再计算右面表达式,如右边的表达式为true,结果为true,否则返回false。
// | 和 ||的原理同上。
//所以短路与和短路或的计算效率更高,建议使用。
System.out.println("周数是:"+(day/7));
System.out.println("剩余天数是:"+(day%7));
}
}
| 和 || 的原理同上。
import java.util.Scanner;
public class Test11{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("请输入第一个数:");
int a = input.nextInt();
System.out.println("请输入第二个数:");
int b = input.nextInt();
//方法一:通过第三个变量来交换
int c = a;
a = b;
b = c;
System.out.println("a="+a+",b="+b);
//方法二:通过表达式来交换两个数
a = a + b - (b=a)
System.out.println("a="+a+",b="+b);
//方法三:通过 +、- 来交换两个数
a = a+b;
b = a-b;
a = a-b;
System.out.println("a="+a+",b="+b);
//方法四:通过异或来交换两个数是最快的方式(注意:a不能等于b)
a = a^b;
b = a^b;
a = a^b;
System.out.println("a="+a+",b="+b);
}
}
优先级
| 运算符 |
综合性
|
1
|
()、[ ]
|
从左到右
|
2
|
! 、+(正)、 - (负)、~、 ++、 --
|
从右到左
|
3
|
^、/、%
|
从左到右
|
4
|
+(加)、-(减)
|
从左到右
|
5
|
<<、>>、>>>
|
从左到右
|
6
|
< 、<=、 >、 >=
|
从左到右
|
7
|
==、!=
|
从左到右
|
8
|
&(按位与)
|
从左到右
|
9
|
*
|
从左到右
|
10
|
|
|
从左到右
|
11
|
&&
|
从左到右
|
12
|
||
|
从左到右
|
13
|
?
|
从左到右
|
14
|
=、+=、-=、*=、/=、%=、&=、|=、^=、~=、<<=、>>=、>>>=
|
从右到左
|
import java.util.Scanner;
public class Test12{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
//System.out.println("请输入第一个成绩:");
//int score = input.nextInt();
//String表示一个字符串类型,不是基本数据类型
//String result = score>=60?"及格":"不及格";
//System.out.println(result);
int a=1;
int b=2;
a = ++a + (b--) + (a-b) + b;
// 2 + 2 - 0 + 2 = 6
System.out.println(a);
}
}
6-转义字符
\n
|
换行,将当前位置移到下一行开头
|
\b
|
退格。相当于backspace
|
\r
|
回车(CR),将当前位置移到本行开头[ Windows系统中回车符是有两个字符来表示\r\n ]
|
\t
|
水平制表(跳到下一个TAB位置)
|
\\
|
代表一个反斜线字符“\”
|
\’
|
代表一个单引号字符
|
\”
|
代表一个双引号字符
|
![](https://i-blog.csdnimg.cn/blog_migrate/58e8e44603c939cf000d4e7de7cf7c25.png)