目录
1.注释和控制台输出语句
/**
* 文档注释
* 会被java Doc文档工具作为文档内容显示
* 一般为类、类的成员变量和成员方法的声明
*/
public class HelloWorld {
//单行注释
/*
多行注释
多行注释
多行注释
*/
public static void main(String[] args) {//主方法
System.out.println("Hello World!!!");//控制台打印输出语句
}
}
//注:其中 public、static、class、void均为关键字,而class后面的 HelloWorld为标识符
/*
标识符:用户自定义的类名、变量名、接口名、方法名
关键字:java语言中已经被赋予特定意义的单词
*/
2.java数据类型
(1)基本数据类型:
其中需要注意的是:
①java中char类型是可以允许一个中文字符的。
②整型默认为int,要用long类型需在其后加上L;浮点型可能为默认为double,要用float类型则要在其后加上F。
③浮点型可能为近似值。
(2)引用数据类型:字符串、数组、类、接口、Lambda表达式(放在之后详细学习)
System.out.println(123);//默认为int类型
System.out.println(123L);//转换为long类
System.out.println(23.44);// 默认为double类型
System.out.println(23.44F);//转换为float类型
System.out.println('A');//字符char类型
System.out.println('中');//可以输入一个中文字符
System.out.println(true+" "+false);//boolean类型
3.变量的使用
(1)变量命名不能使用关键字,使用驼峰命名法。
(2)变量命名必须以数字、字母、下划线和$组成。
(3)必须在变量的有效范围内使用变量,超出则无效。(有效范围:变量在内存中被创建到被清除之间的过程,从代码上看即离变量最近的两个大括号之间的部分)
(4)变量在使用之前必须赋值。
(5)对long类型和float类型,赋值时加上L或F。
{
char c_$char;//定义一个变量
//System.out.println(c_$char);//此处会报错
// 使用之前必须先赋值,否则报错
c_$char = '中';//赋值
System.out.println(c_$char);
//赋值时加上L后缀
long num = 12345L;
}
//System.out.println(c-$char);//报错,因为超出了适用范围
4.基本数据类型之间的转换
(1)自动类型转换(数据范围从小转到大)
int num1 = 123;//整型
double num2 = num1;//转为范围更大的浮点型
System.out.println(num2);
结果为:123.0
(2)强制类型转换(数据范围从大到小)
float num3 = 1244.55F;//定义浮点型
int num4 = (int)num3;//转换为整型,会损失精度
System.out.println(num4);
结果为:1244
注:
①有可能发生精度损失、数据溢出,因此不推荐使用。
②byte/short/char三种类型发生数学运算时首先会转化为int类型再计算
4.java运算符
(1)算术运算符:加减乘除、取模、自增自减
/*
加减乘除以及模(余数)
*/
int num5 = 12;
int num6 = 5;
System.out.println(num5 + num6);//加法
System.out.println(num5 - num6);//减法
System.out.println(num5 * num6);//乘法
System.out.println(num5 / num6);//除法
System.out.println(num5 % num6);//求模(余数)
System.out.println(++num5);//自加
System.out.println(--num6);//自减
结果为:
17
7
60
2
2
13
4
注:
①算术运算的结果类型与数据范围大的运算数类型相同。
System.out.println(12+12.4/2);//此时第一个入栈的是12.4,为浮点型,范围最大
结果为:18.2
②加号还有一个特殊用途就是连接字符串。
/*
加号的特殊用途:连接字符串(任何数据类型与字符串相加都是字符串)
*/
System.out.println("2345"+50);//字符串与整型相加
结果为:234550
③在混合语句中:++i与i++的区别
++i先加1再执行混合语句,i++先执行混合语句再加1。
int num7 = 10;
System.out.println(num7);//初始num7的值
System.out.println(num7++);//后加加:先打印再加1
System.out.println(num7);//后加加后的值
System.out.println(++num7);//前加加:先加1再打印
System.out.println(num7);//前加加后的值
结果为:
10
10
11
12
12
(2)赋值运算符:
int num8;
num8 = 12;//=赋值
System.out.println(num8);
num8 += 2;//与num8= num8 + 2完全一致
System.out.println(num8);
num8 -= 10;//num8自减10
System.out.println(num8);
num8 *= 2;//自乘2
System.out.println(num8);
num8 /= 2;//自除2
System.out.println(num8);
//num8 = num8 % 5;
num8 %= 5;//自模2
System.out.println(num8);
结果:
12
14
4
8
4
4
(3)比较运算符:比较结果为boolean类型
//比较运算符:==、!=、<、>、<=、>=
System.out.println(3==5);
System.out.println(3<5);
System.out.println(3>5);
System.out.println(3!=5);
System.out.println(3>=5);
System.out.println(3<=5);
结果为:
false
true
false
true
false
true
(4)逻辑运算符
//短路与:&&(所有结果都为true)
//短路或:||(至少有一个结果为true)
//非:!(取反)
// & 和 | 不具有短路效果,因为必定要遍历所有条件,所以一般不常用
System.out.println(3>2&&3>1);
System.out.println(3>2&&3<1);
System.out.println(3>2||3<1);
System.out.println(!(3>2));
true
false
true
false
(5)三元运算符:二者选其一
//三目运算符:数据类型 变量名称 = 条件判断 ? 表达式1 : 表达式2
//表达式1:结果为true时使用
//表达式2:结果为false时使用
int a = 3 > 2 ? 4 : 5;
System.out.println(a);
结果为:4
5.方法定义与调用
方法即为若干语句的功能集合,在这里可以把定义方法理解成制定计划,但是制定的计划并不能自己执行,需要一个主体来调用它并执行。
(1)方法的定义格式:
(2)一个简单的方法调用
public class Demo1 {
//主方法:程序运行的入口
public static void main(String[] args){
//调用:执行我的日程安排
int day = me(3);//给定参数为3,用一个int变量接收返回值
me(3);//也可以直接调用,但此时没有去接受返回值
System.out.println(day);
};
//定义一个方法:我一天的日程安排
public static int me(int day){
System.out.println("------第" + day + "天-----");
System.out.println("起床。。。");
System.out.println("洗漱。。。");
System.out.println("吃饭。。。");
System.out.println("学习。。。");
System.out.println("写博客。。。");
System.out.println("打游戏。。。");
System.out.println("睡觉。。。");
return day;
}
}
执行结果:
------第3天-----
起床。。。
洗漱。。。
吃饭。。。
学习。。。
写博客。。。
打游戏。。。
睡觉。。。
3
(3)方法的重载:同一个类中的多个方法可以有相同的方法名称,但是有不同的参数列表。
//两个数相加
public int addTwo(int a, int b) {
return a + b;
}
//三个数相加
public int addThree(int a, int b, int c) {
return a + b + c;
}
//四个数相加
public int addFour(int a, int b, int c, int d) {
return a + b + c + d;
}
对同一类型的方法,如两个数相加,三个数相加,四个数相加,我们分别给他们定义一个方法,在调用时我们要分别记住他们的方法名,若是有更多的数相加,则要记住更多的方法名,这样对使用者来说很不方便,因此我们引入方法重载。
public int add(int a, int b) {
return a + b;
}
public int add(int a, int b, int c) {
return a + b + c;
}
public int add(int a, int b, int c, int d) {
return a + b + c + d;
}
我们把相同类型的方法统一成一个方法,只需改变它的参数、方法体和返回值,而方法名必须相同。这样就完成了方法重载,调用时只需要给定对应的参数并接受相应的返回值即可。
int result1 = demo1.add(2,3);
int result2 = demo1.add(2,3,4);
int result3 = demo1.add(2,3,4,5);
System.out.println(result1);
System.out.println(result2);
System.out.println(result3);
结果:
5
9
14
6.流程控制语句
(1)选择结构
①if-else语句
public class Demo1 {
public static void main(String[] args){
//此处实例化一个输入对象,使用户能够传值给系统
Scanner scanner = new Scanner(System.in);
int a;
a = scanner.nextInt();
//判断分数区间
if(a==100){
System.out.println("满分");
}else if(a < 100 && a >= 80){
System.out.println("优秀");
}
else if(a < 80 && a >= 60){
System.out.println("及格");
}else{
System.out.println("不及格");
}
};
}
输入:69
结果:及格
②switch-case语句(只能用于关键字等值判断的选择结构)
public class Demo2 {
public static void main(String[] args){
Random random = new Random();//实例化伪随机数类
//此处我们给定一个0-6的伪随机数
int a = random.nextInt(7);
System.out.println(a);
//条件判断
switch (a){//此处a的数据类型只能为byte、short、int、char以及String以及枚举类
case 0:
System.out.println("星期一");
//break在这里起了地板作用
//如果一栋楼每层之间没有地板,那么就会从最顶层一直朝下跌落
//如果没有break程序就会继续往下执行
break;
case 1:
System.out.println("星期二");
break;
case 2:
System.out.println("星期三");
break;
case 3:
System.out.println("星期四");
break;
case 4:
System.out.println("星期五");
break;
case 5:
System.out.println("星期六");
break;
case 6:
System.out.println("星期日");
break;
default:break;//当不是上面所列的值时执行
}
}
}
结果:
2
星期三
注:break不能省略,switch关键字数据类型只能为byte、short、int、char、String以及枚举类。
上述代码省略第一个break后,若 a = 0 时结果为
0
星期一
星期二
(2)循环结构
①while循环结构:多用于不清楚具体的循环次数时
public class Demo3 {
public static void main(String[] args){
int a = 1;
//循环控制语句
while(a <= 10){
System.out.println("第" + a + "次循环");
a++;
}
}
}
结果为:
第1次循环
第2次循环
第3次循环
第4次循环
第5次循环
第6次循环
第7次循环
第8次循环
第9次循环
第10次循环
②do-while循环结构:无论是否符合条件,均至少会执行一次循环
public class Demo4 {
public static void main(String[] args){
int a = 13;//此时a已经超出循环条件范围,但do仍先会执行一次循环
do{
System.out.println("第" + a + "次循环");
a++;
}while(a<=10);
}
}
结果:
第13次循环
③for循环:清楚具体的循环次数,多用于数组的遍历与查找
public class Demo5 {
public static void main(String[] args){
int a[] = {1,2,3,4,5,};//此处定义一个数组
for(int i = 0 ;i < a.length;i++){//length为数组长度
System.out.println(a[i]);
}
}
}
结果:
1
2
3
4
5
也可用增强for循环,得到的结果是相同的。
for(int b : a){
System.out.println(b);
}
(3)break与continue关键字:通常与循环结构结合,控制循环结构
break:立刻结束整个循环。
continue:立刻跳过该次循环剩余部分。
public class Demo6 {
public static void main(String[] args){
int a = 0;
while(true){//为true时无限循环,可在循环体里面用条件控制
a++;
System.out.print("第" + a + "次循环");
if(a == 10){
break;//当a为10时终止循环
}
if(a == 5){
System.out.println();
continue;//当a为5时跳过该循环
}
System.out.print("没有被跳过");
System.out.println();
}
}
}
结果为:
第1次循环没有被跳过
第2次循环没有被跳过
第3次循环没有被跳过
第4次循环没有被跳过
第5次循环
第6次循环没有被跳过
第7次循环没有被跳过
第8次循环没有被跳过
第9次循环没有被跳过
第10次循环
其中第五次被continue跳过,第10次直接结束,没有输出后面的内容。