java学习之路_01

@TOC请添加图片描述

问题:什么是tomcat?

bash zsh
在这里插入图片描述
source之后终端重新开一下

java环境配置

java跨平台原理

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home

运行helloworld

在这里插入图片描述
在这里插入图片描述

基础语法

在这里插入图片描述
关键字
全部小写
并且id会有特殊颜色标记

常量
在这里插入图片描述

空常量是不能输出的!为什么在后面

请添加图片描述
定义变量需要初始化
定义变量不能重复使请添加图片描述

long i = 100000000L
防止定义long类型整数太大
定义f请添加图片描述
loat 要使用
float f = 13.14F
默认是double

名字不能重复
变量未定义不能使用
要添加L 跟F

请添加图片描述
/得到商
%得到余数

整数相除只能得到整数 要想得到小数必须有浮点数参与

‘0’ --48
‘A’–65
‘a’–97请添加图片描述
请添加图片描述
请添加图片描述
在这里插入图片描述
来源请添加图片描述
请添加图片描述
字符串+操作是拼接
1 + 99 +“黑马”= 100黑马
字符是底层的加法运算

数据输入
switch
case穿透
在这里插入图片描述
请添加图片描述
数据读取以及随机数
请添加图片描述

请添加图片描述

请添加图片描述
框架组建容器对象类

项目 -模块 -包 -类
请添加图片描述
请添加图片描述

在这里插入图片描述
请添加图片描述
请添加图片描述
在这里插入图片描述
以int和Integer为例:

java中的基本数据类型判断是否相等,直接使用"=="就行了,相等返回true,否则,返回false。

当用“==”进行比较时,jvm默认是比较数据在java堆的地址。
引用
引用

类名字大驼峰

方法名字小驼峰
方法不能嵌套
在这里插入图片描述
只关注名字跟参数
在这里插入图片描述
force step into 会进入官方方法
for 可以定义两个变量

修饰符

包就是文件夹 就
是为了对类进行管理

权限修饰符
private
默认
protected
public

java多态

一个类包含方法跟变量
java静态变量是表示所有对象共享建议通过类名来访问

b静态动态
方法左边右边
变量左边左边

复写的方法也看右边

main是静态方法,为啥可以用其他类中非静态

原话叫做静态成员方法只能访问静态成员

接口:
成员变量:
1.只能是常量
2.默认修饰符 public static final

构造方法:
1.接口没有构造方法,一个类如果没有父类默认继承object

成员方法
只能是抽象方法
默认修饰符public abstract
接口中方法在jdk89有些新特性后面再讲
在这里插入图片描述

抽象类多态接口多态

在这里插入图片描述

在这里插入图片描述
cat中什么都有所以用Cat作为父类变量最好了

类跟接口关系 3种关系

类和类的关系

继承关系,只能单继承,但是可以多层继承

类和接口的关系

实现关系,可以单实现,也可以多实现,还可以继承一个类的时候实现多个接口

接口和接口的关系

继承关系,可以单继承也可以多继承

设计理念

抽象类 对类抽象,包括属性,行为
接口 对行为抽象,主要是行为

报警门
开门关门在类中,报警在接口中

案例
运动员教练 乒乓球出国学英语 学英语肯定是接口

形参和返回值:
方法的形参如果作为类名,返回的是该类的对象,方法的返回值如果是类名返回的是该类的对象

如果是抽象的类?用多态形式

方法的形参是抽象类名,其实需要的是该抽象类的子类对象
方法的返回值是抽象类名其实返回的是该抽象类的子类对象

接口作为形参
方法的形参是接口,其实需要的是该接口的子类对象
方法的返回值是接口其实返回的是该接口的子类对象

内部类
成员内部类
局部内部类
匿名内部类(本质是一个继承抽象类或者实现接口的的子类匿名对象 所以那个格式就是有()的前面是用new的)

向上向下转型

开了一个子类,但子类新方法不能用,重写的才可以用,这就是向上转型,向下转型也不是所有都可以,只有向上转型了的才可以再转回来

javase ee me

int转String

public satic String valueOf(int i) 是String类中的方法

String 转int
public static int parseInt(String s). 该方法是Integer类中的方法

装箱:把基本数据类型转为对应的包装类类型

Integer i = Integer.valueOf(100);
Integer i = 100;

拆箱:把包装类类型转为对应的基本数据类型

Integer ii = 100;
ii+=100;//自动拆箱又装箱
ii = ii.intvalue()+200;//手动拆箱

Integer ii = null;
ii += 200;//就会报错
//在开发的时候如果是一个引用类型的变量,在使用的时候要先做不为null的判断
if(ii!=null){
	ii+=200;

SimpleDateFormat
1.格式化(从date 到String)
public final String format(Date date):
2.解析(从String 到Date)
public Date parse(String source)

在这里插入图片描述
请添加图片描述
蓝色矩形是接口 红色的是实现类

请添加图片描述
new …这里是一个构造方法,变量是一错误的message 在后面 e的三个方法中getmessage会获得返回值

e3个方法只要知道一个
在这里插入图片描述
就够了

运行异常无需显示处理,比如错了就回来改一下index
也可以显示处理跟编译异常一样 用try catch处理请添加图片描述

try catch 可以对异常处理 但有时候没有权限进行处理该怎么办

抛出异常是在定义方法的后面
在这里插入图片描述
直接给我跑到main方法后面了
没有throws就算写对了也无法编译
有了throws 该错还是报错

自定义异常

输入学生成绩超过100 或者小于0
这种异常要自己写

一个异常流程
0.系统或者自定义 系统的话直接看3,4 自定义看1
1.定义一个继承自1.run异常或者2.编译异常
2.在方法中throw跑出异常,如果继承自1.1 则看3 如果1.2 则看4
3.运行异常 不一定需要处理 可以在方法外写throws 也可以不用 或者try catch
4.编译异常必须处理。 在方法外写 或者try catch

自定义异常带参构造

super(s) 而不是super.nessage = s
super()这是父类的构造方法 多简单
在这里插入图片描述
新对象需要用new!!!
所有含有编译异常的方法都有throws显示
但是throw不是都看得 可能在某个方法里嵌套调用

运行异常自定义:定义异常类 方法中跑出异常对象
1.直接不管2.try 3 throws

运行异常系统 不用自己写方法了

  1. 不管2try3throws

编译异常自定义 定义异常类 方法中跑出
1.try 2 throws

编译异常系统 不用自己派出
1.try 2 throws

不用被递归throw吓到
throw肯定是在某个方法里抛出来的 在那里跑出 哪里就是最底层了

list集合有两种方式便利

一种是迭代器
一种是因为list带索引!请添加图片描述

并发修改异常
在这里插入图片描述
并发修改异常 next方法中 判断修改值引发的
用for get 就不会有异常
并发修改异常全解

列表迭代器常用方向 可以任意方向请添加图片描述
列表迭代器有add方法
之前并发异常是迭代器迭代,集合添加
现在是列表迭代器迭代,迭代器添加
原因是add方法里面有个赋值给修改值

增强for循环目的 简化数组和collection集合的遍历
内部原理是一个迭代器 是一个普通迭代器!! 请添加图片描述
请添加图片描述
重地跟通话hashcode一样
请添加图片描述
什么是哈希值请添加图片描述
请添加图片描述
linkedHash 优点
请添加图片描述
请添加图片描述
请添加图片描述
所有基本类型 存储的时候 用的是它的包装类类型

请添加图片描述
请添加图片描述
请添加图片描述
treeset
请添加图片描述

上面是treeset 自然排序。自然排序就是Student类自己实现comparable接口重写compareto方法
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值