一,java前置概念
1、java就是一门计算机编程语言
2、jvm:是java的虚拟机,用来执行java程序的
3、jre:java运行时的环境,包含了jvm和运行的类库
4、jdk:java语言的开发工具包,包含了jer
5、跨平台
同一个java程序,可以运行在不同的操作系统上->跨平台需要通过jvm转换
注意:jvm不是跨平台的
6、cmd常用命令:
1.cd目录:进入目录
2.cd..:后退一步
3.cd /:退回当前根目录
4.dir :查看目录
二:基础语法
- 常量:在程序运行过程中,不会发生变化的量
- 分类:
- 字符串
- 整数
- 小数
- 布尔
- 字符:单引号中间,有且仅有一个字符
- 空常量
- 分类:
- 数据类型:按照数据的特性,对数据进行分类,方便管理数据
- 分类:
- 基本类型
- 整数 byte、short 、 int、 long
- 浮点数 float、double
- 布尔 boolean
- 字符 char
- 引用数据类型:类、接口、数组、枚举、注解...
- 基本类型
- 分类:
- 变量
- 在程序运行过程中,会发生变化的量
- 本质:就是一块内存空间
- 定义格式:数据类型 变量名;
- 赋值
- 数据类型 变量名=值;-->直接赋值
- 数据类型 变量名;变量名=值;-->间接赋值
- 关键字:被java赋予特殊含义的单词
- 所有的关键字都是小写
- public:公共的
- static:静态的
- void:不用返回,直接打印
- class:类
- .......
- 标识符:用来给类、方法、变量起名字的符号
- 组成
- _
- $
- 0~9
- a~z
- A~Z
- 规则
- 不能是关键字
- 不能以数字开头
- 规范
- 大驼峰命名法:给类起名字,所有单词首字母大写
- 小驼峰命名法:给方法和变量起名字,第一个单词首字符小写,其余的单词首字母大写
- 组成
- 注释:对程序的解释说明,给程序员看的——>就是程序的说明书
- 分类:
- 单行注释:/
- 多行注释:/**/
- 文档注释:/** */
- 分类:
- 类型转换
- 变量赋值的要求:左边类型和右边类型必须保持一致
- 如果两边类型不一致,就需要类型转换,转换成一致后,在赋值
- 分类:
- 隐式转换:可以把小类型数据直接赋值给大类型数据,它会把小的类型直接转换成大类型的值
- 强制转换:小类型 变量 = (小类型)大类型的值;
- 运算符
- 算数
- +:加法
- 如果左右两边,有字符串出现,那么就是字符串拼接符
- 如果没有字符串,那么字符会先转换成对应的整数(参照ASCLL码表),在参与运算
- -:减法
- *:乘法
- /:除法
- %:取余
- +:加法
- 赋值:=,+=,*=,/=,-=,%=
- 扩展赋值运算符,隐含了强制类型转换
- 关系:
- >:大于
- >=:大于等于
- <:小于
- <=:小于等于
- ==:等等于
- !=:不等于
- 逻辑:
- &&:并且
- ||:或者
- !:非
- 三元:关系表达式?表达式1:表达式2
- 算数
- 流程控制语句:控制代码的执行顺序
- 顺序语句:系统默认,从上往下依次执行
- 分支/判断语句:Switch / if
- 循环语句:
- for
- while
- do...while
三:面向对象
- 方法
- 是一段独立的代码块
- 如果方法不需要返回值,那么返回值类型就是void
- return 值;结束方法,并把值返回给调用者
- 参数列表:
- 可有可无
- 需要分析当前方法的功能,如果能独立完成,则不需要参数,如果不能独立完成,需要通过参数传递数据
- 重载:在同一个类中,出现方法名相同,参数列表不同的情况
- 方法的重载和返回值类型没有关系
- 方法的重载和参数列表中的变量名也没有关系
- 类:对现实世界具有相同特征的事务的抽象描述(属性+行为)
- 类和对象的关系:
- 类似抽象的
- 对象是根据类创建出来的实体
- 类的内容组成
- 成员变量:private 数据类型 变量名;
- 构造方法:
- public 类名 (参数列表){方法体};
- 如果没有提供构造方法,那么系统会默认提供一个空参构造。
- 如果提供了构造方法,那么系统不会提供一个空参构造。
- 多个构造方法之间,形成了方法的重载
- 成员方法:getter / setter
- 创建对象
- 类名 变量名 = new 类名(参数);
- 变量名.成员;
- 关键字
- private:私有的,被private修饰的成员不能被外界直接访问
- this:这个,this只能写在某个方法内,那个对象调用this所在的方法,那么this就代表那个对象
- 类和对象的关系:
四:常用API
- String
- 创建对象:new String();
- 成员方法
- equals
- length
- equalslgnoreCase
- trim
- contains
- indexOf
- lastlndexOf
- substring
- split
- replace
- 字符串常量池
- 字符串对象一旦创建好,那么他的内容就不可以发生改变
- 在堆中,用来储存字符串,减少空间的浪费
- 字面量的方式创建字符串对象:
- 先去字符串常量池中找,
- 有:不用再创建,直接复用
- 没有:创建新对象,并且把新对象放到常量池中
- Scanner:键盘录入对象
- 创建对象:Scanner sc = new Scanner(System.in);
- 成员方法
- nextInt()获取整数
- nextLine()获取字符串
- Random:获取随机数
- 创建对象:Random r = new Random();
- 成员方法:nextInt(值);随机数的范围[0,值-1]
- 生成任意范围随机数[n,m];nextInt(m-n+1)+n;
- ArrayList(集合):储存多个元素的容器,长度可以变化
- 创建对象
- ArrayList <类型> 变量名 = new ArrayList <类型>();
- 类型的作用就是为了确定集合中储存数据的类型
- 成员方法
- add(元素):添加元素
- add(索引,元素):给指定索引处添加元素
- remove(索引):删除指定索引处元素
- set(索引,元素):给指定索引处赋值/修改指定索引处的元素
- get(索引):获取指定索引处的元素
- size():长度
- 创建对象
- 数组:储存多个元素的容器,长度是不可以变化的
- 创建数组:数据类型[] 数组名
- 数组的初始化
- 数据类型[] 数组名 =new 数据类型[长度]
- 数据类型[] 数组名 = new 数据类型[] {元素1,元素2,元素3...}
- 数据类型[] 数组名={元素1,元素2,元素3...}
- 元素的访问
- 索引:数组中元素的编号
- 从0开始
- 最大到数组长度-1
- 每次递增1
- 数组名[索引]
- 索引:数组中元素的编号
五:java内存模型
- 堆
- 存放new出来的内容
- 堆中所有的数据都有默认值
- 整数:0
- 浮点数:0.0
- 布尔:false
- 字符:空字符
- 引用数据类型:null
- 栈
- 存放局部变量
- 可以运行方法(压栈运行)
- 方法区
- 本地方法区
- 寄存器
六:常见的解题思路
- 遍历容器
- 遍历数组:for循环
- 遍历集合
- 统计思想
- 求和
- 求个数
- 标记思想:判断是否存在。
- 查找思想 :查找某个数据在容器中出现的索引
- 指针实现:定义变量,记录当前操作的索引位置