一、Java开始
JVM JRE JDK
二、了解IDEA
结构
project - module - package - class
创建操作
new project / module / package / class
使用步骤
- new project 同时 new module
- module下 new 多个 package
- package下new 多个 class
- 在类中编写代码
- 完成编译并运行
常用快捷键
快捷键 | 功能效果 |
---|---|
main/psvm , sout | 快速生成代码 |
ctrl + d | 复制当前一行 |
ctrl+ y | 删除所选行 , 当前行 |
ctrl+ x | 删除所选内容,当前行(推荐) |
ctrl+ / 或 ctrl+ shift + / | 注释当前行或所选行 |
alt+shift+上下键 | 上下移动当前代码 |
shift+F6 | 更改变量名 |
导入模块
最好是创建一个空模块,然后复制导入模块的src内容
删除模块
- 1.选择remove该模块,再具体文件中删除
- 2.项目中delete该模块,然后项目中**.idea**文件中的modules.xml删除模块代码,保存,然后重启idea
debug工具
三、基础语法
1.关键字与标识符
关键字:不能用作类名或者变量名称
标识符: 数字、字母、下划线、美元等符号组成,数字不能开头
2.数据类型
类型转换
从小到大:自动转换
从大到小: 强制类型转换
注意:可能导致数据丢失 , 浮点型转整型直接丢掉小数部分
int a = 1000;
byte b = (byte)a;
3.运算符
基本运算符
加号做连接符,能算则算,不能算就在一起
赋值运算符
逻辑运算符
三元运算符
int a = 2000 ;
int b = 0;
int c = a > b ? a : b;
System.out.println(c);
4.程序流程控制
区间匹配 , if else
特值匹配,switch - case - default
case后面是字面值(byte , short , int , char , String) 不能是变量 , 表达式不支持非精确值和long
利用switch的穿透性!!合理使用break;
循环 : while , do while , for
continue , break的区分
OUT使用
Random r = new Random();
Scanner sc = new Scanner(System.in);
int[] data = new int[3];
for (int i = 0; i < data.length; i++) {
data[i] = r.nextInt(20)+1;
}
OUT:
while(true){
System.out.println("请在输入1~20之间的数字,您的数字:");
int guessData = sc.nextInt();
//比对
for (int i = 0; i < data.length; i++) {
if (guessData == data[i]){
System.out.println("恭喜你猜中了,您猜中的"+guessData+"索引为"+i);
break OUT;
}
}
System.out.println("很遗憾,你未猜中");
}
5.数组
静态数组
数据类型[] 数组名 = new 数组类型[] {元素1 , 元素2 , 元素3…};
动态数组
数据类型[] 数组名 = new 数组类型[长度];
数据类型 | 明细 | 默认值 |
---|---|---|
byte、short、int、long、char | 0 | |
基本类型 | float、double | 0.0 |
boolean | false | |
引用类型 | 类、接口、数组、String | null |
数组内存图
6.方法
格式
/** + enter 生成方法的注释格式
方法的修饰符 返回值类型 方法类型 (形参){
…
return ;
}
方法内存的调用原理
值传递
-
基本类型 , 参数传输存储的数据值
-
引用类型 , 参数传输存储的地址值
重载
同一个类,方法名相同,形参列表不同(形参个数,类型,顺序)
return关键字
可以立即跳出并结束当前方法的执行
四、面向对象
1.类和对象
类:共同特征的描述;对象:真实存在的具体实例
如何设计类?
public class 类名 {
1.成员变量(属性)
2.成员方法(行为)
}
如何创建对象?
类名 对象名 = new 类名();
如何访问对象的信息?
-
对象.成员变量
-
对象.成员方法
构造器
初始化一个对象,并放回对象的地址值 Car car = new Car()
无参构造,有参构造
默认无参构造存在,如果定义了有参构造,还想使用无参构造,必须定义无参构造;
this关键字
- 可以出现在对象、方法中
- 代表当前对象的地址
- 可以用于指定访问当前对象的成员
public void play(String name){
System.out.println(this.name+"正在与"+name+"抓鱼");
}
2.封装
JavaBean实体类
-
成员变量使用private修饰
-
提供成员变量对应的setXxx() / getXxx()方法
-
必须提供一个无参构造器,有参构造可写可不写
便捷操作:右键选generate ,在选择setter和getter ,最后shift+选中最后一个有参构造器 generate ,然后选择Constructor
成员变量与局部变量
3.String对象
-
String字符串类型,可以定义字符串变量指向字符串对象
-
String变量每次修改都是产生并指向新的字符串对象
-
原来的字符串对象都是没有改变,所以称为不可变字符串
字符串常量池
只有" "的才会放在字符串常量池中,其他任何形式都放在堆内存中, String str2 = str1 + “c”, 放在堆内存中
创建字符串对象的方式
-
方式一:String name = “name1”;
-
方式二:
构造器 | 说明 |
---|---|
public String() | 创建一个空白字符串对象,不含任何内容 |
public String(String original) | 根据传入的字符串内容,来创建字符串对象 |
public String (char[] chs) | 根据字符数组的内容,来创建字符串的内容 |
public String(byte[] chs) | 根据字节数组的内容,来创建字符串对象 |
两种方式的区别:
以""方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会存储一份;
通过构造器new对象,每new一次,都会产生一个新的对象,放在堆内存中。
String常用API
1.equals(Object o) return true or false ; equalsIgnoreCase(Object o)不区分大小写
String name1 = new String("Abc");
String name = "abc";
System.out.println(name.equals(name1));//false
System.out.println(name.equalsIgnoreCase(name1));//true
name = "abc";
//1.length长度
System.out.println(name.length()); //3
//2.charAt(int index)获取某索引处的字符
System.out.println(name.charAt(0)); //a
//3.toCharArray()转化为字符数组
char[] chars = name.toCharArray();
for (char c : chars) {
System.out.println(c); //a b c
}
//4.subString(int beginIndex, int endIndex)
String subName = name.substring(1, 2); //取左不取右 b
System.out.println(subName);
//5.subString(int index)
System.out.println(name.substring(1)); //bc
//6.replace(target,replacement)
name = name.replace('a', 'b');
System.out.println(name); //bbc
//7.split(String regex)根据传入的规则,分隔字符串为数组
String[] sp = name.split("b");
System.out.println(Arrays.toString(sp)); //[, , c] Arrays.toString(sp)数组输出元素值
4.ArrayList集合
常用无参构造
List<Car> carList = new ArrayList<>(); //多态
泛型,数据类型约束(引用类型), ArrayList对应索引处存储对象地址
List<Cat> carList = new ArrayList<>();
carList.add(new Cat("Tom",1));
carList.add(new Cat("Jerry2",2));
carList.add(new Cat("Jenny",1));
for (Cat cat : carList) {
System.out.println(cat);
}
System.out.println(carList.get(1)); //Cat{name='Jerry2', age=2}
System.out.println(carList.size()); //3
System.out.println(carList.remove(1)); //Cat{name='Jerry2', age=2}
carList.set(0,new Cat("Jerry1",1));
System.out.println(carList); //[Cat{name='Jerry1', age=1}, Cat{name='Jenny', age=1}]
Api学习
1.Scanner 实现键盘录入功能
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的账号:");
String username = sc.nextLine();
System.out.println("请输入您的密码:");
String password = sc.nextLine();
System.out.println("您的账号:"+username + "您的密码:"+password);
- Random 随机数
Random r = new Random();
//打印随机101~120
System.out.println(101+r.nextInt(20));
=1}]
#### Api学习
1.Scanner 实现键盘录入功能
```java
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的账号:");
String username = sc.nextLine();
System.out.println("请输入您的密码:");
String password = sc.nextLine();
System.out.println("您的账号:"+username + "您的密码:"+password);
- Random 随机数
Random r = new Random();
//打印随机101~120
System.out.println(101+r.nextInt(20));