命令提示符(cmd)
启动 win + r
切换盘符 盘符名称:
进入文件夹 cd 文件夹名称
进入多级文件夹 cd 文件夹1\文件夹2\文件夹3
返回上一级 cd…
直接回根路径 cd
查看当前内容 dir
清屏 cls
退出 exit
String 首字母大写,不是关键字 加号代表字符串的连接操作
任何数据类型和字符串进行连接的时候,结果都会变成字符串
只有变量才能使用自增自减运算符,常量不可以发生改变,所以不可以
switch 后面的小括号里面只能是下列数据类型:byte short chat int
引用数据类型:String 字符串,enum 枚举
匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束
(穿透case)
方法定义在类当中,不能定义在方法中
return 后面的返回值数据必须和方法的返回值对应
对于一个void没有返回值的方法,不能写后面的返回值,只能写return
最后一行的return可以不写
一个方法中可以有多个return 语句,但同时只能执行一个
方法的重载(overload)
多个方法的名称相同,但是参数列表不同
方法重载与下列因素相关
1.参数个数不同。
2.参数类型不同。
3.参数多类型顺序不同。
与参数名称无关。
与方法返回值类型不同
数组是一种引用数据类型,数组当中的多个数据类型必须统一
数组的长度在程序运行期间不可以改变
初始化方式
1.静态初始化(指定内容)
2.动态初始化(指定内容)
数据类型【】 数组名称 = new 数据类型【数组长度】;
数据类型【】 数组名称 = new 数据类型【】 {元素1,元素2}
静态初始化一旦使用省略格式,就不能拆分成两个步骤
使用动态初始化数组时,其中的元素会自动拥有一个初始值
如果是整数类型,那么默认为0
如果是浮点类型,那么默认为0.0
如果是字符类型,那么默认为’\u0000’
如果是布尔类型,默认为false
如果是引用类型,默认为null
Java的内存需要划分为五个部分
1.栈(stack):存放的都是方法中的局部变量,方法的运行一定要在栈中
局部变量:方法的参数,一或者是方法{}内部的变量
作用域:一旦超出作用域,立刻从栈内存中消失
2.堆:凡是new出来的东西,都在堆当中
堆内存里面的东西都有一个地址值:16进制
堆内存中的数据,都有默认值
如果是整数类型,那么默认为0
如果是浮点类型,那么默认为0.0
如果是字符类型,那么默认为’\u0000’
如果是布尔类型,默认为false
如果是引用类型,默认为null
3.方法区:储存.class相关信息,包括方法的信息
4.本地方法栈:与操作系统有关
5.寄存器:与CPU有关
局部变量和成员变量
1.定义的位置不一样
局部变量:在方法内部
成员变量:在方法外部,直接写在类当中
2.作用范围不一样
局部变量:只有在方法中才可以使用,出了方法就不能再用
成员变量:整个类都能使用
3.默认值不一样
局部变量:没有默认值,如果想要使用,必须手动进行赋值
成员变量:如果没有赋值,会有默认值,规则和数组一样
方法的参数就是局部变量
4.内存的位置不一样
局部变量:位于栈内存
成员变量:位于堆内存
5.生命周期不一样
局部变量:随着方法进栈而诞生,随着方法出栈而消失
成员变量:随着对象的创建而诞生,对着对象被垃圾回收而消失
间接访问private成员变量
必须叫setXxx或者是getXxx命名规则
对于Getter 来说,不能有参数,返回值类型和成员变量对应
对于Setter 来说,不能有返回值,参数类型和成员变量对应
对于基本方法中的boolean值,getter方法一定要写成isXxx
this.成员变量名
通过谁调用的方法,谁就是this
构造方法是专门用来创建对象的方法
通过关键字new来创建对象时,就是在调用方法
格式:Public 类名称(参数类型 参数名称){
方法体
}
注意事项:
1.构造方法的名称必须和所在的类名程完全一样,包括大小写
2.构造方法不要写返回值类型,连void也不写
3.构造方法不能return一个具体的返回值
4.如果没有编写任何构造方法,那么编译器就会默认赠送个构造方法,没有参数,方法体什么也不做
5.一旦编写了至少一个构造方法,那么编译器不再赠送
导包
import 包路径.类名称;
如果需要使用的目标类,和当前类位于同一个包下,则可以导包语句
只有java.lang 包下的内容不需要导包,其他的包都需要import
创建对象的方法
类名称 对象名 = new 类名称();
匿名对象就只是有右面的对象,没有左面的名称和对象名
注意事项:匿名对象只能使用一次,下次使用不得不在创建一次
Random类用来生成随机数字
Random n = new Random();
int num = r.nextInt(); //范围为int的全部范围
(快速写循环:循环次数.for循环单位)
int num = r.nextInt(10);输出的是【0,10)的元素左闭右开
根据int变量n的值,来获取随机数字,范围是[1,n],两边都可取,可以在外面加一
ArrayList集合的长度可以改变
对于ArrayList 来说,有一个尖括号代表泛型
也就是说装在里面的元素,全都是一个类型
泛型只能是引用类型i,不能是基本类型
ArrayList = new ArrayList();
注意事项:
对于ArrayList集合来说,直接打印得到的不是地址值,而是内容
如果内容为空,得到的是空的中括号:[]
向集合中添加数据:list.add("");
public boolean add(E e);向集合中添加元素,参数类型和泛型一致,返回值代表是否添加成功
public E get (int index);从集合中获取元素,参数是索引编号,返回值就是对应位置的元素
public E remove(int index);从集合中删除元素
public int size();获取集合的尺寸长度,返回值是集合所包含的元素个数
获取元素list.get();
删除元素list.remove();
如果希望向集合ArrayList当中储存基本类型数据,必须使用基本类型对应的包装类。
基本类型 包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
字符串的特点
1.字符串的内容永不可变。
2.正是因为字符串不可改变,所以字符串是共享的
3.字符串效果上相当于是char[]字符数组,实际上底层原理是byte[]字节数组
字符串常量池:程序当中直接写上的双引号的字符串,就在字符串常量池
对于基本类型来说,==是进行数值的比较
对于引用类型来说,==是进行【地址值】的比较
双引号直接写的字符串在常量池当中,new的不在池当中。
对字符串内容进行比较
public boolean equals(Object obj);
参数可以是任何对象,只有参数是一个字符串,并且内容相同时,返回ture’否则返回false
public int length();获取字符串当中所含的字符个数,拿到字符串长度
public char concat(String str);将当前字符串和参数字符串拼接成为返回值新的字符串
public char charAt(int index);获取指定位置的单个字符。(索引从零开始)
public int indexOf(String str);查找参数字符串在字符串中首次出现的索引位置,如果没有返回-1
字符串的截取方法:
public String substring(int index)截取从参数位置开始一直到末尾,返回新字符
oublic String substring(int begin , int end) [begen,end)包含左面,不包含右面。
public char[] toCharArray():将当前字符串拆分成为字符数组作为返回值
public byte[] getBytes():获得当前字符串底层的字节数组
public String replace(CharSequence oldString, CharSequence newString ):将所有出现的老字符串替换为新的字符串,返回替换后获得新字符串。
String str1 = str1.replace(“o”,“0”)
分割字符串:
public String[] split( String regex);按照参数的规则,将字符串切成若干部分
String str1 = “aaa,bbb,vvv”
String[] array1 = str1.split(",");
split是正则表达式
如果按照英文句点“.”进行切分,必须写成"\."(两个反斜杠)
static的概述
只在本类中保存一份,所有的对象共享一份
一旦用了static关键字
这样的内容就不属于对象自己,而是属于类
所以凡是本类的对象,都共享同一份
使用static修饰的方法,叫静态方法,不属于对象,属于类
对于静态方法来说,可以通过对象名进行调用,也可以直接调用类名称
静态变量:类名称.静态变量
静态方法:类名称.静态方法()
1.静态不能访问非静态
原因:因为在内存中是现有的静态内容,后有的非静态内容
先人不知道后人,但后人知道先人
2.静态方法中不能使用this
this 代表当前对象,通过谁调用的方法谁就是当前对象。
根据类名称访问静态成员变量的时候,全程和对象没关系,只和类有关系
静态代码块
public class Person{
static{
//静态代码块内容
}
}
特点:当第一次用到本类时,静态代码块执行唯一的一次
静态内容总是优于非静态,所以静态代码块比构造方法先执行
静态代码块的用途:
用来一次性地对静态成员变量进行赋值
public static String toString 将参数数组变成字符串
public static void sort 按照默认升序对数组元素进行排序
数学类
public static double abs(double num);获取绝对值
public static double ceil(double num);向上取整
public static double floor(double num);向下取整
public static long round(double num);四舍五入
在继承的关系中,子类就是一个父类
public class 子类名称 extends 父类名称(
在父子类的继承中,如果成员变量重名,则常见子类对像时,访问有两种
直接通过子类对象访问成员变量;
等号左边是谁,就优先用谁,没有则向上找。
间接通过成员方法访问成员变量;
该方法属于谁,就优先用谁,没有才向上找
在父子类的继承关系中,创建子类对象,访问成员的柜子:
创建的对象是谁,就优先用谁,如果没有则向上找
无论是成员方法还是成员变量,如果没有都是向上找父类,绝对不会向下找子类
重写(方法的覆盖)
在继承关系中,方法的名称一样,参数列表也一样
重载
方法的名称一样,参数列表不一样
特点:创建的是子类对象,则优先用子类的方法
方法覆盖重写的注意事项:
1.必须保证父子类的方法名称相同,参数列表也相同
@Overrude:写在方法的前面,用来检测是不是有效的正确覆盖重写
2.子类方法的返回值必须小于等于父类方法的返回值范围
3.子类方法的权限必须大于等于父类的权限修饰符
public > protected > (default) >private
(default)不是关键字,而是什么都不写
继承关系中,父子类构造方法的访问条件:
1.子类构造方法当中有一个默认隐含的“super()”构造,所以一定是先调用的父类构造,然后执行子类构造
2.子类构造可以通过super关键字来调用父类重载构造
3.super的父类构造调用,必须是子类的构造方法的第一个语句
不能一个子类构造调用多次super构造
总结:
子类必须调用父类的构造方法,不写则赠送super();写了则用写的指定的super调用,super只能有一个,还必须是第一个
this用来访问本类内容
1.在本类成员方法中,访问本类的成员变量
2.在本类的成员方法中,访问本类的另一个成员方法
3.在本类的构造方法中,访问本类的另一个构造方法
在第三种用法中注意:
1.this调用也必须是构造方法中唯一一个,也是第一个
2.super和this两种构造方法,不能同时使用
Java语言是单继承的
一个类的直接父类只能有一个。
Java可以多级继承
一个子类的直接父类是唯一的
但是一个父类可以拥有很多子类