基础篇-9天
进阶篇-19天
基础篇
Day1
-
人机交互方式
- 图形化:速度慢,占内存多
- 命令行:速度快,占内存小
-
shutdown -s -t 300 计算机在300s后关机,可以坑人
-
java是美国Sun公司(Stanford University Network)在1995年推出的计算机语言,或被Oracle公司偏高
-
Java之父:詹姆斯·高斯林
-
Java三大平台
- Java SE
- Java语言的(标准版),用于桌面开发应用,是其它两个版本的基础
- 桌面应用:用户只要打开程序,程序的界面会让用户在最短时间内找到它们的需要的功能,同时主动带领用户完成他们的工作并得到最好的体验
- 学习Java SE的目的:为今后要从事的Java EE开发,打基础
- Java ME
- java语言的(小型版),用于嵌入式消费类电子设备
- Java EE
- java语言的企业版,用于Web方向的网站开发
- 网页:用于数据展示
- 网站:网页+后台服务器
- Java SE
-
java跨平台(即跨多操作系统)
- 原理:在需要运行Java的应用程序的操作系统上,安装一个与Java对应的Java虚拟机(JVM Java Virtual Machine)
-
下载JDK
- Java 8,11,17为:LTS(long-term suppor长期支持版)
- 官网下载
-
JDK的组成
-
IDEA概述
- 目前业界公认的最好的Java集成开发环境
- IDEA项目结构介绍
- project
- moudle
- package
- class
Day2
-
标识符命名规范
- 小驼峰命名法
-
- 标识符是一个单词的时候,所有字母小写
-
- 标识符由多个单词组成的时候,从第二个单词开始,首字母大写
- 该命名法多用于变量
-
- 大驼峰命名法
-
- 标识符是一个单词的时候,首字母大写
-
- 标识符由多个单词组成的时候,每个单词的首字母大写
- 该命名用于类的命名
-
- 小驼峰命名法
-
整数类型,首选int,定义long类型变量需要加入L的标识
-
- 基本得隐式转换
- 把一个取值范围小的数值或变量,赋值给另一个取值范围更大的变量
-
- 运算中的隐式变换
- 取值范围小的数据,和取值范围大得数据进行运算,小的会提升为大的再进行运算
- byte,short,char,三种数据在运算时,会提升为int,再进行运算
-
计算机中进制分类
- 10进制:默认
- 2进制 :0b开头
- 8进制 :0开头
- 16进制:0x开头
Day3
- 方法(函数)
- 方法调用内存
- 方法没有被调用的时候,在
方法区
字节码文件中存放 - 方法被调用时,需要进入到
栈内存
中运行
- 方法没有被调用的时候,在
- 方法重载
- 在同一个类中,定义了多个同名的方法,但每个方法具有不同的参数类型或参数个数,这些同名的方法,就构成了重载关系
- 方法调用内存
Day4
- jdk14后,case后面允许编写多个数据,多个数据之间用逗号隔开
switch(week){
case 1,2,3,4,5 -> System.out.println("");
case 6,7 -> System.out.println("");
default -> System.out.println();
}
Day5
-
数组遍历快捷键:
数组名.fori
-
数组初始化
- 动态初始化:初始化时只指定数组长度,由系统为数组分配初始值
- 格式:
数据类型[] 数组名 = new 数据类型[数组长度]
-
ctrl+alt+M:抽取方法的快捷键
-
Java内存分配
- 方法去:字节码文件加载时进入的内存
- 栈内存:方法运行时进入的内存
- 堆内存:new出来的东西会在这块内存中开辟空间并产生地址
-
Java二维数组
- 二维数组在存储一维数组时,具体存储的是一维数组的地址
Day6
讲习题,跳!
Day7
-
面向对象:并不是一种技术,而是一种编程的指导思想
-
面向对象程序设计(Object Oriented Programming),OOP
-
Java中想要创建对象,必须先要有类的存在
-
类指的是一组相关属性和行为的集合,我们可以理解为是一张对象的设计图,一个类可以创建无限的对象
-
类的组成
- 属性:成员变量
- 跟之前定义变量的格式一样,但位置需要放在方法外面
- 行为:成员方法
- 跟之前定义方法格式一样,但需要去掉static
- 属性:成员变量
-
类的本质:对事物进行的描述
-
打印对象名,可以看到对象的内存地址
- 全类名:包名+类名
区别 | 成员变量 | 局部变量 |
类中位置不同 | 方法外 | 方法中 |
初始值不同 | 有默认初始值 | 没有,使用之前需要赋值 |
内存位置不同 | 堆内存 | 栈内存 |
生命周期不同 | 随着对象的创建而存在,随着对象的消失而消失 | 随着方法的调用而存在,随着方法的运行结束而结束 |
作用域 | 在自己所属的打括号中 | 在自己所属的打括号中 |
-
this关键字
- 局部变量和成员变量重名时,使用就近原则
- this关键字可以调用本类成员
- this代表当前对象的引用
-
构造方法
- 初始化一个新建的对象,创建和构造对象的时候所调用的方法
- 格式
-
- 方法名与类名相同
-
- 没有返回值类型
-
- 没有具体的返回值
-
- 作用
-
- 本质作用:创建对象
-
- 结合执行时机:可以在创建对象的时候,给对象中的数据初始化
-
- 注意事项
-
- 构造方法的创建:如果没有定义构造方法,系统会给出一个默认的无参的构造方法
-
- 构造方法的重载:构造方法也是方法,允许重载
-
- 推荐使用方式:无参和有参的构造方法均自己给出
-
-
面向对象三大特征:封装,继承,多态
-
封装:使用类设计对象时:将需要处理的数据,以及处理这些数据的方法,设计到对象中
- 更好的维护数据
- 使用者无需关心内部实现,只要知道如何使用即可
- 封装的设计规范:合理隐藏,合理暴露
- 权限修饰符
- private:同一个类中
-
- 私有成员变量(保证数据安全性)
-
- 针对私有成员变量,提供setxxx,getxxx方法
-
- (default):同一个类中,同一个包中
- protected:同一个类中,同一个包中,不同包的子类中
- public:任意位置访问
- private:同一个类中
-
标准JavaBean
-
- 这个类的成员变量都要私有,并提供对应的set和get方法
-
- 提供带参和无参的构造方法
- JavaBean是一个实体类
-
-
实体类:实体类只负责数据存取,而对数据的处理交由其它类来完成,实现数据和数据业务处理相分离
Day8
-
常用API(Application Programming Interface:应用编程接口)
- 使用JDK的API帮助文档
-
- 看索引位置搜索自己要查看的类
-
- 看包,目的是看是不是Java.lang包(核心包),核心包不需要编写导包代码(import)
-
- 看这个类的介绍:弄清楚类的作用
-
- 看这个类的构造方法:为了创造该类的对象
-
- 看这个类的成员方法:方法名,参数,返回值,介绍
-
- 使用JDK的API帮助文档
-
String类
-
- String是java核心包,所有程序中的双引号字符串都是String这个类的对象
-
- 字符串一旦被创建,就不可以被更改,字符串内容不可变更,想要更改只能使用新的对象,做替换
-
- String字符串虽然不可以更改,但可以被共享
- 字符串常量池:当我们使用双引号创建字符串对象时,会检查常量池中是否存在该数据:不存在则创建,否则复用
- jdk7之前:StringTable在方法去,7之后在堆内存
- 字符串的两种构造方式
-
- 双引号直接创建
-
- 通过构造方法
- 方法区别:双引号直接创建会在String Table中进行维护,而通过构造方法时,new方法会在堆中新开辟出一块内存
-
-
String s=new String();//创建一个空白字符串
String s=new String(char[] chs);//根据传入的字符数组,创建字符串对象
String s=new String("abs");//根据传入的字符串来创建字符对象
- String中的比较方法
public boolean equals(Object anObject) //将此字符串与指定字符串进行比较
public boolean equalsIgnoreCase(String anotherString) //忽略大小写进行字符串比较
- String字符串的遍历
- char[] toCharArray(); 将字符串转化为字符数组
- char charAt(int index); 根据指定索引返回对应位置字符
- int length(); 返回字符串的长度,这是一个方法
- String的截取方法 类似C++的
- String substring(int beginIndex);
- String substring(int beginIndex,int endIndex); 这个方法左闭右开
- String的替换方法
- String replace(CharSequence target,CharSequence replacement)
- 参数1为旧值,参数二为新值,自动将旧值替换为新值
- String replaceAll(String regex,String replacement)
- 使用replacement替换所有符合regex正则表达式的字符串
- String replaceFirst(String regex,String replacement)
- 使用replacement替换第一个符合regex正则表达式的字符串
- String replace(CharSequence target,CharSequence replacement)
- String的拆分方法
- Sting[] split(String regex) 根据给定正则表达式的匹配拆分字符串
String s="192,168,1,1"; String[] sArr=s.split(","); //如果要匹配字符 "." 需要转义字符 "//." sAA={"192","168","1","1"};
long time = System.currentTimeMillis();获取从19700101 0时0分到现在有多少毫秒
- StringBuilder的引入
- 作用:提高字符串的操作效率
- 介绍:
-
- 一个可变的字符序列
-
- StringBuilder是字符串缓冲区,可以理解为容器,这个容器可以存储任意数据,但其里面自动转为字符串
-
- 构造方法
- public StringBuilder(); 创建一个空白字符串缓冲区,初始容量16个字符
- public StringBuilder(String str);
- 常用成员方法
- public StringBuilder append(任意类型): 添加数据返回对象自己
- s.append(“a”).append(“b”):链式编程:调用的方法,返回的结果是对象,就可以继续向下调用方法
- public StringBuilder reverse():将缓冲区中的内容进行反转
- public int length()
- public toString() 将缓冲区的内容以String类型返回
- public StringBuilder append(任意类型): 添加数据返回对象自己
- StringBuilder和StringBuffer
- 方法都一样
- 但是StringBuilder是线程不安全的,StringBuffer是线程安全的,因此StringBuilder效率高一些,而StringBuffer效率慢一些
day9
-
集合基础
- 集合是一种容器,装数据,类似数组
- 数组的局限:数组定义并启动后,长度即固定
- 但是集合大小可变
-
Array长度可变原理
-
- 当创建Array集合容器的时候,底层会存在一个长度为10个大小的空数组
-
- 随后扩容原数组1.5倍大小的新数组
-
- 将原数组拷贝到新数组种
-
- 将新元素添加到新数组
-
-
ArrayList
-
- 构造方法:
public ArrayList()
创建一个空的集合容器
- 构造方法:
-
- 指定类型的构造方法
ArrayList<String> list = new ArrayList<>()
<>
是一个泛型
- 指定类型的构造方法
- 常用方法
-
进阶篇
进阶篇转战看书 On java 8 了,感觉自己也不是很急,不如稳稳地看书系统地学习java,博客地址