笔记 (变量+数据类型)
2022年8月26日
10:15
局部变量:代码块之内
全局变量:于方法之外,类之内(无static修饰)
注释:单行注释:
多行注释:
文档注释:
常量:
常量值:
用大写表示:以final关键字来定义的常量
常量一旦被赋值/定义(定义前加上final),则不可修改。
数据类型:
占用:
引用数据类型:
string、数组等;
特殊:null类型(空类型)——>引用数据类型使用(将null赋值于基本类型会报错)
静态变量:用static修饰(生命周期取决于类的周期)
命名方式:标识符由数字、字母、下划线(_)、及$组成如:a12ghdg
注意:数字不能作为标识符的开始,如:1ac
转换+运算符+scanner
字符型能转换成整形:char->short
引用类型与基本类型无法相互转换(两种数据类型必须相互兼容)
“+”的特性:
任何数据类型与字符串作“+”运算,都会转换成字符串。
除运算需要有小数点及后面的数时,需改变预算的数据的数据类型
java中只存在false与true
关系运算符预算返回值为true/false(布尔值)
equals:使用之前需要申请对象:
也可以先申请后赋值:
scanner语句:
Scanner scan= new scanner(System.in)
Int q = scan.nextInt()
决定要输入内容的类型
需输入字符串时不许添加红色区域内容(nextline:直到回车之前的内容都显示)
第一句:字符串:无法显示空格之后的内容。
第二句:字符串:可以显示至回车之前的内容。
位运算:只对整型使用
右移:除以n个2(n:右移n个位)
左移:乘以n个2
直接量/字面量:能够直接看到的值;
类型:基本类型、字符类型(flaot、string)、null类型
复合语句:将多个语句组合在一起。
分支(if/else if):
多分支:
最后的else语句可要可不要
equals语句(用于比较字符内容是否相等)使用方法:“需要比较”.equals(比较的内容)
循环语句四部分:关键字、循环条件、循环体、迭代语句
while():可能一次都不执行(先判断,后执行)
du{……}while():最少执行一次(先执行,后判断)
循环嵌套层数超过三层,逻辑必定出问题
遍历方法
有返回值不用写:public static void
无返必有:void
调用类里的方法需要创建类的对象。(调用非static关键字修饰的方法。)
.var
非static修饰的方法可以调用非static修饰的方法
可变参数最后将被封装成一个数组
数组的创建:
静态创建数组的特点:创建数组的同时给数组元素赋值
动态创建数组的特点:创建数组时指定数组的长度,不对数组中的元素赋值
索引:下标
数组的特点:
数组名 .for(遍历)
引用类型的数组的初始值为null
random:生成随机数
使用方法:
Random random = new random();
赋值:
Int I = random.nextInt(指定s范围)
第二种随机数方法:
又称构造函数:
每个Java类必须包含(若未手动构造,则编译器会自动构造无参构造方法)
特点:
- 方法名字必须与类名完全相同
- 没有任何返回值,也无void关键字
语法:
修饰符(public) 类名(){ 方法体 } |
作用:实例化对象,初始化对象的初始值
this关键字:防止出现参数赋值参数的问题
使用方法:
This.变量名 = 参数 |
方法中不添加this关键字,白一起会默认补上this关键字
一个构造方法可以通过this关键字调用另一个重载的构造方法(在构造器中使用this关键字调用重载构造器时,代码必须位于第一行
常量:常量池
new关键字修饰:堆中
变量:栈
封装
核心:属性私有化,方法公开化。
为属性提供统一的访问方法:get():获取属性值
set():设置属性值
语法特点:
get属性名字();例题getname()
set属性名字(参数):setname()
继承
关键字:extends:
使用:方法名后+extends+类名
super关键字:super☞父类对象
特点:必须放置于构造函数的第一条语句(与this关键字相似)
子类对象能赋值于父类类型定义的参数。
方法重写:
发生位置:子类重写父类方法。(发生在子父类之间)
{
(一)
参数列表相同
方法名相同
方法体不同
(二)
引用类型的返回值派生类(子类)小于或者等于(父类)
void、基本类型(必须相同)
(三)子类的访问权限要大于父类访问权限
}
多态
继承关系
子类重写父类的方法
父类引用子类对象
abstract关键字,放置于calss关键字之前
抽象类中的抽象方法不能有{}
如果类中包含抽象方法,则该类必须为抽象类
抽象方法能被重载
interface:接口关键字:public interface 接口名
接口实现关键字:(继承)/实现多个接口:interface 接口名,接口名……
使用方法:类名+inpelements+接口名
接口:包含类要实现的方法,是抽象方法的集合
接口中定义的变量默认为被public final static修饰(常量)
访问接口常量:接口名.常量名
接口无法实现接口,但能继承接口同时还能多继承
成员内部类:不能定义静态的方法和变量(final除外)
定义:于类中创建一个类
作用:服务于外部类
main方法中创建内部类关键字:外部类.内部类 变量名 = 外部类对象.new 内部类
静态内部类可以通过(外部类.内部类.方法/变量)
匿名内部类:
这种形式的new语句声明一个 新的匿名类,他对一个给定的类进行扩展,或实现一个给定的接口。
示例:
New Demo01(){
};
static
被static所修饰的静态成员或方法不是方法的数据结构,而是类的数据结构(通过使用类的方法直接使用,不需要实例化对象即可使用)
final
final修饰成员变量,表示成员变量不可修改
所修饰的方法不能被重写
Static final
定义为常量,定义之时需初始化,且无法被更改。
../(返回上一路径)
./(查找当前路径)
Java二级考点
start方法必须(不然无法刷新界面)
创建画布:
设置画布尺寸:setSize(,)
设置窗口居中显示:setLocationRelativeTo(null)
关闭窗口终止运行:setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
设置标题:setTitle("标题名称")
设置logo:setIconImage(ImageIO.read(this.getClass().getResource("../img/0.png")));
将创建的窗口显示:setVisible(true)
绘画图片对象:g.drawImage("图片对象",x坐标,y坐标,null)
碰撞体:使用x坐标与y坐标进行规划(不像unity);
鼠标触发器:mouseAdapter(末尾需添加鼠标监听对象:this.addMouseListener(ma);)否则无法通过检测鼠标动作。
append(“内容”):拼接相同的内容
文字的操作
从指定位置截取到字符串末尾:substring(int num)
范围截取:sbustring(int x,int y)…含头不含尾(该方法不会截取y的指定参数)
指定目标字符进行分割:split(”char“)///限定分割次数:split(”char“,int)
转义符”. |“必须加‘\’
字符串替换 :replace(string oldchar,string newchar);默认替换所有oldchar
比较equalslgnoreCase(”比较的内容“):不区分大小写
字符串的查找:indexOf()/lastindexOf()
indexOf(value):返回第一个查找到的目标下标
indexOf(value,int 从哪个下标开始)
lastindexOf(value):返回最后一个查找到的目标下标
StringBuffer类:创建字符串(需要示例化该对象)
StringBuffer():初始长度为16
StringBuffer(int length):初始长度为length
StringBuffer(String str):初始长度为16+字符串的长度
Reverse:将字符串反转输出。
删除指定字符:deleteCharAt(下标);
删除区域字符:delete(下标,下标);
插入字符串:append(”内容“)
与Stringbuild的区别:比其安全,但慢
正则表达式的使用
replaceFirst(String regex(正则表达式),String replacement(替换内容))匹配相对应的内容替换
结束符:$
开始符:^
Math类
静态常量:E:自然对数
PI:圆周率
max方法
min方法
生成随机数:random类/random()
方法random():只能生成随机的0~1的数(double类型):生成n以内的随机数即后面*n。
类random:能提供各种数据类型的随机数
Random.nextint(int x):生成一个不包含x的随机数
DecimalFormat类:格式化字符
format方法:new DecimalFormat(类型).format(以下内容)
0.0:会在数的后面自动补0(有几个0保留一位小数)
#.#:不会自动补0(有几个#保留几位小数)
date类
格林尼治时间:
Date():获取当前本地时间
after():判断是否在当前是时间之后
before():判断是否在当前是时间之前
DateFormat类
无法使用关键字,需使用静态方法
format(date):格式化时间
子类:SimpleDateFormat类(需要实例化对象)
用法:SimpleDateFormat 参数名 = new SimpleDateFormat(格式”y-m-d h
y:年份 |
M:月份 |
d:日期 |
h:时 |
m:分 |
s:秒 |
isNaN:判断是否为非数字:是 return true
Return false
常用变量:
MAX_VALUE:表示float的最大值
MIN_VALUE:表示float的最小值
System类
extit():退出程序0:退
1:不退
自带的日志:
Logger.GetGlobal().info(“打印信息”)
级别:SEVERE
WARNING
INFO
异常(java.lang.Throwable)
Error:错误
Exception:异常(NullPointerException e(空指针异常)),ArrayIndexOutOfBoundsException e(数组下标越界异常))
try catch:捕获异常并且处理异常
try{
(代码块)
}
cacht(异常类型){
(处理异常的代码块)
}
try catch finall:
try{
(代码块)
}
cacht(异常类型){
(处理异常的代码块)
}……
finall{
(代码块)无论情况如何,最终都会走向finally(该语句块实在return语句之前)
}
throws:异常声明自己写同时要继承Exception或RuntimeException
抛出特定异常需要
父类:RuntimeException:运行时异常
Exception:普通异常
集合(容器)
ArrayList:查询快,增删改慢
LinkedList:查询慢,便于增删
集合只能保存对象数组
分类:Collection接口
Map接口
LIst接口:实现Collection接口
定义集合:
Collection col = new Arraylist();“接口无法定义为对象,需要向上造型”
col即为该集合
创建集合:
List<存储的数据类型> ls = new ArrayList();
Set类
迭代器Iterator<数据类型> 变量名 = 集合.iterator
(默认创建)HashSet类:无顺序的放入元素
只能拥有一个null
treeSet类
可以实现集合的自然排序(升序排序)
保存两组值:
Key/value
Hash Map类通过哈希算法查找
TreeMap类:自然排序
Collections类
Collections 类提供了许多操作集合的静态方法,借助这些静态方法可以实现集合元素的排序、查找替换和复制等操作。(使用类名调用)
addAll(添加的内容):添加元素
fill(集合,更换内容)方法:替换list集合中的所有元素为指定元素
replaceAll(集合,指定内容,替换内容):将集合中的指定内容调换成输入内容
reverse(集合):次序颠倒
swap(集合,下标,下标):两个元素互换位置
迭代器
获取迭代器对象:Iterator<> iterator = 需要添加迭代器的集合.Iterator;