JAVA基础语法

零、输入输出

输出:

1
System.out.println("Hello World"); //输入sout可以自动弹出
输入:
1
Scanner();
## 一、变量
1

## 二、运算符 +、-、*、/、%、++、--、<<、>>作用同C++; 关系运算符同C++; 三元运算符同C++; #### “+”运算符 字符串相加: “+”会将两个字符串拼接,其他类型和字符串相加也会直接拼接
1
System.out.println("123"+123); //输出123123
连续进行“+”操作时,从左到右执行:
1
System.out.println(1+2+"123"); //输出3123
字符相加:ASCII码相加 #### 逻辑运算符 与:& 或:| 异或:^ 非:! 短路运算符&&和||: - &和|会判断对前后语句的正误都进行判断; - 使用&&,当前面语句为FALSE,则不会对第二个语句进行判断,直接返回FALSE; #### 左移/右移运算符 <<、>>将将二进制数进行左移/右移
1
2
3
int a = 200
int b = a << 2; //b=800
int c = a >> 2; //c=50
## 三、隐式转换和强制转换 取值范围:byte<short<int<long<float<double #### 隐式转换 隐式转换:取值范围小的变成取值范围大的(自动类型提升);
1
2
int a = 10; 
double b = a; //b完成了隐式转换
byte、short、char在进行运算时都会自动转为int。 #### 强制转换 强制转换:可以将取值范围大的变成取值范围小的; 格式:目标数据类型 变量名 = (目标数据类型)被强转的数据;
1
2
double a = 300;
int b = (int)a; //强制转换
## 三、流程控制语句 #### 分支结构 if语句:
1
2
3
4
5
6
//if (关系表达式) {语句体;} else {语句体}
if (a > 2) {
a--;
} else{
a++;
}
switch语句:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
switch (a){
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default: //以上情况都不是
System.out.println("上班");
break;
}
//case穿透:
int num = 6;
switch (num){
case 6:
System.out.println("星期六"); //没有break语句,输出星期六后继续往下执行
case 7:
System.out.println("星期日");//输出星期日
break;//跳出switch语句
default:
System.out.println("上班");
break;
}
//用->可以不用break:
switch (num){
case 6 -> System.out.println("星期六"); //输出星期六并跳出
case 7 -> System.out.println("星期日");
default -> System.out.println("上班");
}
#### 循环结构 基本同C++ ## 四、数组
1
2
3
4
5
6
int[] array = {11, 22, 33};//创建int数组并初始化,数组为引用数据类型(存储地址值),数组长度为3且不再变化;
System.out.println(array);//会输出数组的内存地址[I@xxxxxxxx,指向堆内存
System.out.println(array.length);//输出数组的长度3
//遍历数组:
for (int i = 0; i < array.length; i++) {} //输入array.fori可快速弹出
String[] arr = new String[50]; //创建长度50的字符串数组,默认初始值为null;
## 五、方法
1
2
3
public static int add(int a, int b){
return a+b;
}//返回两个参数相加的结果
Java方法也可以重载。 ## 六、面向对象 测试类:带main方法的类 Javabean类:用来描述一类事物,不写main方法
1
2
3
4
5
6
public class Person{
string m_name;
int m_age;//定义成员变量
public void print_name() { System.out.println(this.m_name);}//定义成员函数
}
Person p1 = new Person();//定义对象:类名 对象名 = new 类名();
一个java文件可以定义多个类,且只能一个是public修饰,public修饰的类名必须成为代码文件名,因此一个文件一般只定义一个class类。 封装:变量修饰为private,再通过public的方法调用; 成员变量与局部变量: - 就近原则:若没有声明,优先认为age是局部变量; - 可以使用this.age调用成员变量; 构造方法:与C++基本一致 - 利用ptg可以快速生成javabean类 ## 七、字符串 常用内容:String、StringBuilder、StringBuffer、Pattern、Matcher 字符串内容在创建后就不能改变,但可以改变字符串变量指向的字符串; #### String构造方法
1
2
3
4
5
6
7
8
9
10
11
12
//1.直接赋值
String s1 = "abc";
//2.使用new
String s2 = new String();
//3.传递一个字符串,根据传递的字符串内容再创建一个新的字符串对象
String s3 = new String(orginal:"abc");
//4.传递一个字符数组,根据字符数组内容再创建一个新的字符串对象
char[] chs = {'a','b','c'};
String s4 = new String(chs);
//5.传递一个字节数组,根据字节数组内容再创建一个新的字符串对象
byte[] bytes = {97,98,99};
String s5 = new String(bytes);
#### 常用方法 字符串比较:
1
2
3
4
String s1 = new String("abc");
String s2 = new String("abc");
boolean result1 = (s1==s2); //false,==比较的是地址
boolean result2 = s1.equals(s2); //true
StringBuilder:可以看作一个容器,创建之后里面的内容是可变的
1
2
3
4
5
StringBuilder sb = new StringBuilder("abc");//创建对象
sb.append(1);//添加元素,sb值为abc1
sb.reverse();//反转,sb值为1cba;
int len = sb.length();/获取长度,len值为3
String str = sb.toString();//变成字符串
StringJoiner
1
2
3
StringJoiner sj = new StringJoiner(",","[","]");//指定,为间隔符号,[]为开始结束符号
sj.add("aaa").add("bbb").add("ccc");//[aaa,bbb,ccc],add参数只能是字符串
String str = sj.toString;
## 八、集合ArrayList ArrayList类似vector,只能存放引用变量
1
2
3
4
5
6
7
8
ArrayList<String> list = new ArrayList<>();//创建字符串集合
list.add("abc");//添加
list.add("bbb");
list.remove("abc");//删除
String str = list.remove(0);//删除第一个数据,并将其赋值给str
String str1 = list.set(0, "ccc");//修改第一个数据为ccc并将修改前的数据返回
String.get(0);//返回第1个数据
int len = list.size();//返回长度