- 单行注释://…
- 多行注释:/…/
- 文档注释:/…/
- 示例
public class Welcome {
//我是单行注释
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
2、标识符
- 标识符必须以字母、下划线(_)、美元符($)开头。
- 标识符其他部分可以是字母、下划线、美元符和数字的任意组合。
- java标识符大小写敏感,长度无限制。
- 标识符不可以是java关键字。
- 标识符使用规范
(1)表示类名的标识符:每个单词首字母大写。
(2)表示方法和变量的标识符:第一个单词小写,其余单词首字母大写。驼峰原则。
注意:java不采用ASCII字符集,采用Unicode标准的国际字符集。因此字符包括汉字。
| abstract | assert | boolean | break | byte | case |
| catch | char | class | const | continue | default |
| do | double | else | extends | final | finally |
| float | for | goto | if | implements | import |
| instanceof | int | interface | long | native | new |
| null | package | private | protected | public | return |
| short | static | strictfp | super | switch | synchronized |
| this | throw | throws | transient | try | void |
| volatile | while |
-
变量的本质
本质上就是代表一个“可操作的存储空间”,空间位置是确定的,但是里面的值是不确定的。可以通过变量名来访问“对应的存储空间”。
-
变量作为程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储空间。
注意事项
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量名必须是合法的标识符。
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
- 变量分类
| 类型 | 声明位置 | 从属于 | 生命周期 |
|---|---|---|---|
| 局部变量 | 方法或者语句块内部 | 方法/语句块 | 从声明位置开始,直到方法或者语句块执行完毕,局部变量消失 |
| 成员变量(实例变量) | 类内部,方法外部 | 对象 | 对象创建,成员变量也创建。对象消失,成员变量也消失 |
| 静态变量(类变量) | 类内部,static修饰 | 类 | 类被加载,静态变量就有效;类卸载,静态变量消失。 |
- 定义:产量通常指的是一个固定的值。在Java中用关键字final修饰,一旦初始化就不能修改其值。
- 声明格式
final type varName=value;
注意
6、基本数据类型
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则: monthSalary
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则: Man, GoodMan
- 方法名:首字母小写和驼峰原则: run(), runRun()
- Java中定义的3类基本数据类型
- 数值型:byte(1字节)、short(2字节)、int(4字节)、long(8字节)、float(4字节)、double(8字节)
- 字符型:char(2字节)
- 布尔型:Boolean(1字节)
- 转义字符
| 转义字符 | 含义 | Unicode |
|---|---|---|
| b | 退格 | u0008 |
| n | 换行 | u000a |
| r | 回车 | u000d |
| t | 制表符 | u0009 |
| " | 双引号 | u0022 |
| ’ | 单引号 | u0027 |
| 反斜杠 | u005c |
| 算术运算符 | 二元运算符 | +,-,*,/,% |
|---|---|---|
| 一元运算符 | ++,– | |
| 赋值运算符 | = | |
| 扩展运算符 | +=,-=,*=,/= | |
| 关系运算符 | >,<,>=,<=,==,!= instanceof | |
| 逻辑运算符 | &&,||,!,^ | |
| 位运算符 | &,|,^,~ , >>,<<,>>> | |
| 条件运算符 | ? : | |
| 字符串连接符 | + |
- 扩展运算符
| 运算符 | 用法举例 | 等效的表达式 |
|---|---|---|
| += | a += b | a = a+b |
| -= | a -= b | a = a-b |
| *= | a *= b | a = a*b |
| /= | a *= b | a = a/b |
| %= | a *= b | a = a%b |
- 关系运算符
| 运算符 | 含义 | 示例 |
|---|---|---|
| == | 等于 | a==b |
| != | 不等于 | a!=b |
| > | 大于 | a>b |
| < | 小于 | a |
| >= | 大于或等于 | a>=b |
| <= | 小于或等于 | a<=b |
- 逻辑运算符
| 运算符 | 说明 | |
|---|---|---|
| 逻辑与 | &( 与) | 两个操作数为true,结果才是true,否则是false |
| 逻辑或 | |(或) | 两个操作数有一个是true,结果就是true |
| 短路与 | &&( 与) | 只要有一个为false,则直接返回false |
| 短路或 | ||(或) | 只要有一个为true, 则直接返回true |
| 逻辑非 | !(非) | 取反:!false为true,!true为false |
| 逻辑异或 | ^(异或) | 相同为false,不同为true |
- 位运算符
| 位运算符 | 说明 |
|---|---|
| ~ | 取反 |
| & | 按位与 |
| | | 按位或 |
| ^ | 按位异或 |
| << | 左移运算符,左移1位相当于乘2 |
| >> | 右移运算符,右移1位相当于除2取商 |
- 字符串连接符
”+“
示例:
int a=12;
System.out.println("a="+a);//输出结果: a=12
-
条件运算符
三目运算符:x ? y : z
-
运算符的优先级
| 优先级 | 运算符 | 类 | 结合性 |
|---|---|---|---|
| 1 | () | 括号运算符 | 由左至右 |
| 2 | !、+(正号)、-(负号) | 一元运算符 | 由左至右 |
| 2 | ~ | 位逻辑运算符 | 由右至左 |
| 2 | ++、– | 递增与递减运算符 | 由右至左 |
| 3 | *、/、% | 算术运算符 | 由左至右 |
| 4 | +、- | 算术运算符 | 由左至右 |
| 5 | <<、>> | 位左移、右移运算符 | 由左至右 |
| 6 | >、>=、<、<= | 关系运算符 | 由左至右 |
| 7 | ==、!= | 关系运算符 | 由左至右 |
| 8 | & | 位运算符、逻辑运算符 | 由左至右 |
| 9 | ^ | 位运算符、逻辑运算符 | 由左至右 |
| 10 | | | 位运算符、逻辑运算符 | 由左至右 |
| 11 | && | 逻辑运算符 | 由左至右 |
| 12 | || | 逻辑运算符 | 由左至右 |
| 13 | ? : | 条件运算符 | 由右至左 |
| 14 | =、+=、-=、*=、/=、%= | 赋值运算符、扩展运算符 | 由右至左 |
-
自动类型转化
容量小的数据类型可以自动转换为容量大的数据类型
- 注意:实线表示无数据丢失的自动类型转化;虚线表示有精度丢失的类型转化。
-
强制类型转化
用于显式的转换一个数值的类型,语法格式:(type)var
-
从键盘获取输入
import java.util.Scanner;//获取键盘输入的包
public class TestScanner {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入名字:");
String name = scanner.nextLine();
System.out.println("请输入你的爱好:");
String favor = scanner.nextLine();
System.out.println("请输入你的年龄:");
int age = scanner.nextInt();
System.out.println("###############");
System.out.println(name);
System.out.println(favor);
System.out.println("来到地球的天数:"+age*365);
System.out.println("离开地球的天数:"``+(72-age)*365);
}
}
8、练习题
一、选择题
1.以下选项中属于合法的Java标识符的是( CD )。(选择二项)
A.public
B.3num
C.name
D._age
2.下面的代码段中,执行之后i和j的值是( C )。(选择一项)
int i=1; int j;
j=i++;
A1,1
B.1,2
C.2,1
D.2,2
3.下面的赋值语句中错误的是(A )。(选择一项)
Afloat f = 11.1;
B.double d = 5.3E12;
C.double d = 3.14159;
D.double d = 3.14D;
4.在Java中,下面( AC )语句能正确通过编译。(选择二项)
ASystem.out.println(1+1);
B.char i =2+‘2’;
System.out.println(i);
C.String s=“on”+‘one’;
D.int b=255.0;
5.以下Java运算符中优先级别最低的两个选项是( AB )。(选择二项)
A赋值运算符=
B.条件运算符 ?=
C.逻辑运算符|
D.算术运算符+
二、简答题
1.Java是一种强类型语言,说明Java的数据类型分类。
Java是一种强类型语言,每个变量都必须声明其数据类型。 Java的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。
2.i++和++i的异同之处
两者都是对i的自增操作,i++是先对i进行输出再进行自增,++i则是先进行对i的自增再进行输出。
3.运算符||和|的异同之处
逻辑或|(或),两个操作数有一个是true,结果就是true。短路或,||(或),只要有一个为true, 则直接返回true。 短路与和短路或采用短路的方式。从左到右计算,如果只通过运算符左边的操作数就能够确定该逻辑表达式的值,则不会继续计算运算符右边的操作数,提高效率。
4.Java中基本数据类型转换的规则
自动类型转换指的是容量小的数据类型可以自动转换为容量大的数据类型。如图,黑色的实线表示无数据丢失的自动类型转换,而虚线表示在转换时可能会有精度的损失。
三、编码题
1.输入圆形半径,求圆形的周长和圆形的面积,并将结果输出。
import java.util.Scanner;
public class Test{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入圆的半径:");
float r=sc.nextFloat();
System.out.println("该圆的半径为:R="+r);
System.out.println("该圆的周长为:C=2*3.14*"+r+"="+2*3.14*r);
System.out.println("该圆的面积为:S=3.14*"+r+"*"+r+"="+3.14*r*r);
}
}
2.银行利率表如下表所示,请计算存款10000元,活期1年、活期2年,定期1年,定期2年后的本息合计。
结果如下图所示(结果四舍五入,不保留小数位。使用Math.round(double d)实现)。
public class Test2{
public static void main(String[] args){
double d=10000;
System.out.println("本金:"+d);
System.out.println("活期1年本金总计:"+Math.round(d*1.0035));
System.out.println("定期1年本金总计:"+Math.round(d*1.015));
System.out.println("活期2年本金总计:"+Math.round(d*(1+0.0035*2));
System.out.println("定期2年本金总计:"+Math.round(d*(1+0.021*2)));
}
}
3.某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。结果如图所示。
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
showcode();
}
static void showcode() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个四位数的整数:");
int num = scanner.nextInt();
Integer inum = Integer.valueOf(num);
if (encode(inum)==0) {
System.out.println("该数字不符合要求");
showcode();
}else {
System.out.println("加密后的数字为:"+encode(inum));
}
}
static int encode(Integer num) {
if((num<=9999) && (num>=1000) && (num instanceof Integer)) {
return (num/1000+5)%10+(((num/100)%10+5)%10)*10+(((num/10)%10+5)%10)*100+(((num%10)+5)%10)*1000;
}
return 0;
}
}



