JAVA学习笔记(持续更新中)
1.初始Java
注释
单行注释:// 注释内容(用的最多)
多行注释:/* 注释内容*/
文档注释: /** 文档注释 */
注意:注释不能嵌套
标识符
标识符可以包含:字母、数字以及 下划线和 $ 符号
注意:标识符不能以数字开头,也不能是关键字,比如new 且要注意区分大小写
大驼峰:每个单词首字母大写,比如SearchWord
2.数据类型与变量
字面常量
比如100,13.14,‘A’,true,flase等
- 字符串常量:由""括起来的,比如“12345”、“hello”、“你好”。
- 整形常量:比如:100、1000
- 浮点数常量:比如:3.14、0.49
- 字符常量:由单引号括起来的当个字符,比如:‘A’、‘1’
- 布尔常量:只有两种true和false
- 空常量:null
注意:字符串、整形、浮点型、字符型以及布尔型,在Java中都称为数据类型
数据类型
java中数据类型包括两种:基本数据类型和引用数据类型
其中基本数据类型包括:
- 字节型(byte)1字节
- 短整型(short) 2字节
- 整型(int) 4字节
- 长整型(long) 8字节
- 单精度浮点数(float)4字节
- 双精度浮点数(double)8字节
- 字符型(char)2字节
- 布尔型(boolean)没用明确规定
变量
语法格式:数据类型 变量名 = 初始值
比如:int a = 10;
double d = 3.14;
char c = ‘a’;
boolean b = true;
注意:
- 在定义float时,需要在后面加上f/F
比如:float a = 1.0f.因为在java中小数是默认为double类型 - boolean类型,只能由true和false,分别代表真和假
类型转换
在java中可以进行数据类型的转换
比如
int a = 10;
long b = 100L;
b = a;//编译成功
a = b;//编译失败
以上代码int型转化为long型时,编译失败,是因为int占4个字节,double占8个字节,在赋值的过程中有数据丢失,因此不可以。由此我们知道,我们可以将数据类型占小的字节转化为大的,不会影响,反之不可以。
那么如何正确转化
int a = 10;
long b = 15L;
a = (int)b;
这样子就可以编译成功了
3.运算符
算术运算符
加减乘除模((+ - * / %)
这里加减乘不做过多介绍,主要介绍一下除和模
- 除和我们数学中的除不一样,当是两个int型数据相除的时候
int a = 5;
int b = 2;
int c = a / b;
System.out.println(c);//2
运行上面代码我们发现最终的值是2,int / int 结果还是int类型,而且会向下取整
- 如果有小数的话,我们会得到小数
float a = 5.0f;
float b = 2.0f;
System.out.println(a / b);//2.5
运行上述代码我们得到的值是2.5
- 自增自减运算符
int a = 1;
a++;//后置++,说明此时的值已经是2了
System.out.println(a++); // 后置++是先使用这个值,所以还是2
System.out.println(a);//这个是3
++a;//前置++ 现在a = 4
System.out.println(++a); // 5,前置++ 是直接使用这个值了
System.out.println(a);//5
关系运算符
java中主要有6个,== !=
int a = 10;
int b = 20;
System.out.println(a == b) //false
System.out.println(a != b) //true
逻辑运算符(重点)
1.逻辑与&&
当两个表达式都是真的时候结果才为真,有一个假就是假
int a = 1;
int b = 2;
System.out.println(a == 1 && b == 2)//true
2.逻辑或 ||
两个表达式都为假的时候最后的结果才为假,有一个真就是真
int a = 1;
int b = 2;
System.out.println(a == 2 || b == 1)//false
3.逻辑非 !
将真变为假,将假变为真
int a = 1;
System.out.println(a == 1)//true
System.out.println(a != 1)//false
4.短路求值
&&和| |这两个操作符会按顺序执行
System.out.println(10 > 20 && 10 / 0 == 0); // false
System.out.println(10 < 20 || 10 / 0 == 0);// true
这就说明后面的10/0没有被执行,但是&和|没有短路求值
位运算符
位运算符一共有4个:& | ~ ^
1.按位与&:两个二进制位都是1的时候,结果是1,否则为0
int a = 3;
int b = 2;
int c = a & b;
System.out.println(c) //2
a的二进制是 011
b的二进制是010
c的结果是 010
2.按位或,如果两个二进制位都是0,结果是0,否则为1
int a = 3;
int b = 2;
int c = a | b;
System.out.println(c) //3
a的二进制是 011
b的二进制是010
c的结果是 011
3.按位取反~,如果该位为0,取反之后为1
4.按位异或^,如果两个数的二进制位相同,为0,反则为1
则1^1 = 0;
1^n ^1 = n
n^n = 0
移位运算(了解)
1.左移 <<:最左侧位不要了,最右侧补0
7的二进制位为:0000 0111
7 << 1 = 0000 1110 =14
左移一位相当于原来的数字乘2
2.右移>>:最右侧位不要了,最左侧补符号位(整数补0,负数补1)
11的二进制位为:0000 1011
11 >> 1 = 0000 0101 = 5
右移一位相当于原数字除以2(11/2 =5)
3.无符号右移>>>:最右侧位不要了,最左侧补0
-1的二进制位为1111 1111
-1 >>>1 = 0111 1111
条件运算符
表达式1?表达式2:表达式3
当表达式1为true时,执行表达式2的值
当表达式1为false时,执行表达式3的值
nt a = 10;
int b = 20;
int max = a > b ? a : b;//20
4.逻辑控制
顺序循环
按照顺序一行一行的执行
分支结构
if语句
1.if else语句
比如:如果我考了100分,就奖励玩游戏,否则继续学习
int score = 100;
if (score == 100){
System.out.println("玩游戏");
} else{
System.out.println("继续学习");
}
2,if else if else语句
比如:如果我考了90-100分,奖励100元
如果我考了80-90分,奖励50元
如果低于80分,奖励30元
这种就可以使用if else if else语句
3.注意else是和最近的if匹配的,所以我们尽量加上大括号
switch语句
switch(表达式){
case 常量值1:{
语句1;
break;
}
case 常量值2:{
语句2;
break;
}
default:{
}
例如以下代码
int day = 1;
switch(day) {
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;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("输入有误");
break;
}
注意switch括号里面只能是:
基础类型:byte,char,short,int,不能是long
引用类型:String常量串,枚举类型
!!!break别忘记
循环结构
while循环
while(循环条件){
循环语句;
}
当循环条件为true时,执行循环语句,否则退出
break
break的功能是让循环提前结束
int num = 100;
while (num <= 200) {
if (num % 3 == 0) {
System.out.println("找到了 3 的倍数, 为:" + num);
break;
}
num++;
}
上述代码我找到3的倍数时,就跳出整个循环了,所以最后的值为102
continue
continue是跳出当前的循环,进入下一次循环
int num = 100;
while (num <= 200) {
if (num % 3 != 0) {
num++; // 这里的 ++ 不要忘记! 否则会死循环.
continue;
}
System.out.println("找到了 3 的倍数, 为:" + num);
num++;
}
for循环
for(表达式①;布尔表达式②;表达式③){
表达式④;
}
执行顺序为:
①②③④—>②③④—>②③④—>②③④—>②③④—>②③④—>…—>②为false,循环结束。
do while循环(选学)
do{
循环语句;
}while(循环条件);
do while循环最后有一个分号
do while循环肯定会执行一次
###使用Scanner读取字符串/整数/浮点数
首先要导入util包
import java.util.Scanner;
Scanner sc = new Scanner(System.in);//固定格式
System.out.println("请输入你的姓名:");
String name = sc.nextLine();//读入一行
System.out.println("请输入你的年龄:");
int age = sc.nextInt();//读入整数
System.out.println("请输入你的工资:");
float salary = sc.nextFloat();//读入浮点数
System.out.println("你的信息如下:");
System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);
sc.close(); // 注意, 要记得调用关闭方法
5.方法的使用
java中的方法类似与C语言中的函数
1.如何定义
修饰符 返回值类型 方法名称([参数类型 形参 …]){
方法体代码;
[return 返回值];
}
比如实现两个整数相加的方法
public class Method{
public static int add(int x,int y){
return x+y;
}
}
一般采用小驼峰命名,java中,方法必须在类中
方法重载
什么是重载?
1.方法名相同
2.参数列表不同(包括参数类型,参数个数,类型顺序)
比如:
public static int add(int x,int y){
return x+y;
}
public static double add(double x,double y){
return x+y;
}
以上就是方法重载了,因为参数类型不同,一个int和double