一. java语言的发展史(了解) 我们为什么学java:java他是一门计算机语言,与计算机交流的方式。开发软件。 软件的分类:应用软件(qq,微信,淘宝),系统软件:window,mac,linux. java之父是谁:高斯林 jdk11学习用这个版本 二. java的跨平台原理 平台:不同的操作系统。 跨平台:一套代码可以在任意操作系统上运行。(一处编译,到处运行)。他需要在不同的操作系统上安装对应的jvm(java虚拟机). jvm本身不是跨平台的,他解决的是java的跨平台。 三. jre和jdk 1.jre:java运行环境----我们运行一个java程序,只需要安装jre即可。 jre=jvm+核心类库。 2.jdk:java开发环境 jdk=jre(jvm+核心类库)+开发工具包 四. path环境变量的配置 windows提供了一个环境变量的东西,我们把我们的jdk目录配置到path中,我们就可以在任意目录下去使用这个命令。(原理:我们在dos窗口使用命令的时候,它首先会去当前的文件目录下去找有没有这个命令,如果找不到,他会依次去环境变量配置的目录去寻找) 五. 注释 给代码进行解释说明的文字,是不参与编译和运行的 // 单行注释 /* */ 多行注释 /** */ 文档注释 六. 关键字 定义:被java征用了,被java赋予特殊含义的单词或字母的组合. 一共有53个,其中有51个已经被赋予含义了,还有两个保留的关键字. 举例:public class static void true false 七. 常量 1.整数型:就是我们数学当中的整数. 1,12,36,520 可以直接输出. 2.浮点型:数学中的小数:3.14,5.20,13.14 可以直接输出 3.字符型:就是被单引号引起来的单个的字符 4.字符串:"双引号包起来的都是" 5.布尔型:只有两个true和false 6.空常量型: null 不能被输出 八. 数据类型 java是一个强类型数据语言,对待不同的数据类型,内存会分给不同的存储空间,所以我们要把不同的数据,划给不同的空间。 a.基本数据类型 b.引用数据类型(类,数组,接口) 基本数据类型分为4类8种: [td]数据类型 | 关键字 | 内存占用 | 取值范围 | 整数型 | | | | | byte | 1 | -128 ~ 127(负的2的7次方 ~ 2的7次方-1) | | short | 2 | -32768~32767 | | int | 4 | -2的31次方到2的31次方-1 | | long | 8 | -2的63次方到2的63次方-1 | 浮点型 | | | | | float | 4 | 负数:-3.402823E+38到-1.401298E-45 正数: 1.401298E-45到3.402823E+38 | | double | 8 | 负数:-1.797693E+308到-4.9000000E-324 正数:4.9000000E-324 到1.797693E+308 | 布尔型 | | | | | boolean | 1 | true,false | 字符型 | | | | | char | 2 | 0-65535 |
九. 变量 变量的定义:在程序的运行当中,其值在一定范围内可以发生改变的量,我们就称它为变量. 1.变量的定义格式: a.数据类型 变量名 = 变量值; b.数据类型 变量名; 变量名=值; c:同时定义多个相同数据类型的变量 数据类型 变量名=数值,变量名=数值,变量名=数值.......; 2.变量的使用 变量名=值; 十. 标识符(命名规范) 1.由数字,字母,_(下划线),$组成 2.不能以数字开头 3.不能是关键字 4.区分大小写 大小驼峰命名法 十一. 类型转换 不同的数据类型存储其他的数据类型的数据. 数值型之间的类型转换 byte---> short---> int --->long --->float---> double char 隐式类型转换:从小的数据类型往大的数据类型转换 强制类型转换:从大往小的转 格式: 目标数据类型 变量名 = (目标数据类型) 数值; DAY2-运算符、Scanner、ifDAY3-流程控制语句一. switch switch(表达式){ case 常量1 : 语句体1; break;(可以省略) case 常量2 : 语句体2; break;(可以省略) ...... default : 最后执行的语句; break; 执行流程:表达式最终的结果一定是一个常量(byte,short,int,char,枚举,字符串).拿表达式的值与case的值从上到下一一比较,如果匹配上,开始执行匹配到的case下面的语句,直到遇到break或者switch结束,整个switch才结束.如果表达式最终的结果与所有的case都没有匹配上,就执行default的语句. 注意:case 不能重复 注意:匹配case值匹配一次,匹配到了开始执行对应case下的语句,直到遇到break或者switch结束.如果我们不加break,他会出现case穿透现象. if和switch的区别,他们都是选择分支机构,在一些情况下,他们可以互换,但是if他的表达式是一个范围,表达式的结果是一个boolean值,而switch的表达式范围是一个常量(byte,short,int,char,枚举,字符串).我们在大部分情况下用if会多一点,if更多的选择的语句,switch类似于分支.
二. for循环 for(循环初始值;循环条件;修改循环条件){ 循环体;}格式解释: 循环初始值:循环一开始的状态 循环条件:你需要符合什么条件才能继续执行循环体 修改循环条件:每一次循环之后,应该修改我的本身需要去判断的条件的值,否则值不变,一直循环或者一直不循环. 循环体:循环执行的内容. 三. while循环 while循环完整格式: 初始化语句;while(条件判断语句){ 循环体; 修改循环条件}
while循环执行流程: 1.首先应该执行初始化语句 2.执行条件判断语句,看条件判断语句的结果是true还是false 如果是false,循环结束 如果是true,继续向下执行 3.执行循环体 4.修改循环条件 5.回到2 四. do...while循环 完整格式: 初始化语句;do{ 循环体; 修改循环条件;}while(条件判断语句);执行流程: 1.首先执行初始化语句 2.执行循环体 3.修改循环条件 4.去判断条件是否满足条件判断语句 如果true,回到2 如果是false,结束循环
五. 三种循环的区别 while和for与di-while的区别,do-while不管满不满足条件,循环体肯定会执行一次.但是while和for循环体不一定会执行. for循环和while的区别 for格式里面定义的变量,属于for,等for循环结束,变量就不能在被使用了,但是while因为变量是在while的范围之外,所以他的变量在出了while循环之后可以继续使用. do-while基本不用. while:使用场景:当循环未知次数的时候, for:当循环次数已知的时候.
六. 跳转控制 continue:当在循环体里面遇到continue关键字的时候,本次(当前)循环结束,继续下次循环 break:当前整个for循环结束 七. Random DAY4-数组一. 数组 什么是数组【理解】数组:就是容器,可以存储多个相同 的数据. 数组定义格式【记忆】数据类型 [] 变量名; int [] arr; 数据类型 变量名[]; int arr[]; 动态初始化格式数据类型 [] 数组名 = new 数据类型 [长度] ; int[] arr = new int[80]; 什么是索引索引,角标,下标,就是计算机给数据的编号.从0开始,不间断,连续的. 访问数组元素格式数据数据 a=数组名[索引]; java中的内存分配[td]区域名称 | 作用 | 寄存器 | 给CPU使用,和我们开发无关。 | 本地方法栈 | JVM在使用操作系统功能的时候使用,和我们开发无关。 | 方法区 | 存储可以运行的class文件。 | 堆内存 | 存储对象或者数组,new来创建的,都存储在堆内存。 | 方法栈 | 方法运行时使用的内存,比如main方法运行,进入方法栈中执行。 | 静态初始化格式完整版格式 数据类型 [] 数组名 = new 数据类型 [] {元素1,元素2......}; 简化版格式 数据类型 [] 数组名 = {元素1,元素2......};
索引越界异常出现原因 public class Demo6 { public static void main(String[] args) { int [] arr = {1,2,3,4}; //访问了不存在的索引,索引是0开始到长度-1结束 System.out.println(arr[6]); }}
解决方案 我们写代码的时候,需要考虑我们访问的索引是不是存在的,如果索引都不存在,肯定报了数组越界异常. ArrayIndexOutOfBoundsException;
空指针异常数组遍历【应用】总结数组1.数组可以一次性开辟多个空间去保存相同数据类型的变量. 2.他有索引,他的索引是从0开始,到长度-1结束 3.不能整体的给数组赋值,只能给单个的数组索引对应位置辅助,格式 数组名[索引]=数值; 4.获取对应索引位置的值:数组名[索引] 5.获取数组的长度(他的元素个数):数组名.length DAY5-方法方法的概念(理解) 方法是一个具有独立功能的代码集,他可以独立的运行,我们需要先编写这个方法,在需要的时候去调用即可.调用的格式就是方法名(); 方法我们自己定义的,方法名是我们自己起的,遵循小驼峰命名法.a.方法写在类中:就是class的大括号中.b.他与main函数是并列的关系.他们没有先后.main里面不能直接写方法,自定义方法里面也不能在写方法. 为什么要有方法:我们重复使用的具体独立的功能的代码,我们需要早在程序里编写很多次,造成代码的阅读性很差,我们想到了方法(函数),方法就把这些具体独立功能的代码封装起来,在你程序需要的时候,就可以调用,这个代码我们只需要写一次,很多可以一直的调用,调用的格式是方法名(); 作用:减少代码的复用性. 注意:
具有独立的功能.这个是你自己定的,需要你编写 需要调用才会执行
无参数方法定义和调用(掌握)定义格式: public static void 方法名(){ 方法体;}
调用格式: 方法名();范例: zuoFang();注意: 方法必须先定义,后调用,否则程序将报错
带参数方法定义和调用(掌握)定义格式: 参数:参与运算的数 参数范例: public static void 方法名(数据类型 变量名,数据类型 变量名,....){ 方法体;}范例 public static void isEvennumber(int a){ if(a%2==0){ System.out.println("是偶数"); }else{ System.out.println("是奇数"); } }
注意:方法定义参数是int型的,你就传什么类型的.参数定义几个,或者是什么类型的需要你自己去定,别人调用你的时候,需要按照你参数列表中的顺序,类型都要一样的去给你.
方法名(变量/常量); 范例:
int b = 19; isEvennumber(b);
形参和实参(理解) 我们定义一个方法的时候,首先你自己要知道你定义的方法是干什么用,此时你可以决定调用者调用你方法的时候,需要传递给你什么类型的数据,你得接收,你就在方法的参数列表(方法的小括号)位置定义变量,变量的定义格式就是数据类型,变量名,如果有多个,用逗号隔开.此时他没有实际的值,所以我们叫他形式上参与运算的值,也叫形参. 2.实参: 调用者调用你方法的时候,他会看到你的参数列表,需要调用者提供什么数值,调用者就需要把实际的值给你去参与运算,最后得到结果,格式是方法名(变量/常量);这个数是不是实实在在存在的,我们叫他实际参与运算的数也叫实参. 方法的注意事项(掌握)方法不能嵌套定义 方法重载(理解)方法重载概念 方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载 方法重载:方法的重复载入 满足一下条件就是重载: 1.在同一个类中 2.方法名相同的 3.参数列表不同(a.个数不同,b.顺序不同,c.数据类型不同) 4.与返回值无关,你就不用看返回值了
DAY7-面向对象一个标准类的构成: 1.私有的属性 2.属性的公共get/set方法 3.行为,自定义的方法 4.构造函数(满参,无参) 类和对象的关系 什么是类:他是java语言用来描述现实生活中某一类事物共性(共同的属性和行为)的总结和描述. 什么是对象:他是基于我们写的这个类在java中创建出来的真实个体(实体).在堆内存当中存在,他就是现在生活中的一个实物. 举个例子:汽车他是一类事物,我们可以写一个汽车的总结和描述,他是一个类.但是你自己的汽车就是一个对象.(万物皆对象) 封装private关键字【理解】private是一个修饰符,可以用来修饰成员(成员变量,成员方法) this关键字【应用】this:为了解决局部变量和成员变量重名的问题 就近原则:你使用的变量他表示的是离使用最近的那个定义的变量. 那么我们区分成员变量和局部变量的在一个方法里都要使用的时候,this.变量名表示的就是成员变量. 不加this表示的就是局部变量. this:谁调用我this就表示谁. 封装思想【理解】封装概述 是面向对象三大特征之一(封装,继承,多态) 是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的 封装原则 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 成员变量private,提供对应的getXxx()/setXxx()方法 封装好处 通过方法来控制成员变量的操作,提高了代码的安全性 把代码用方法进行封装,提高了代码的复用性
构造方法概述【理解】构造方法是一种特殊的方法 构造方法的注意事项【理解】构造方法的创建:首先如果我们没有手动书写构造方法,系统默认提供一个无参构造,如果你写了一个有参构造,系统默认提供的无参构造将会失效,如果我非要再使用无参,我们必须手动书写一个无参构造.
DAY8-常用api1API概述【理解】String类概述【理解】 String (Java SE 9 & JDK 9 )String类代表字符串。 Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。 String类的特点【理解】String类的构造方法【记忆】常用的构造方法 [td]方法名 | 说明 | public String() | 创建一个空白字符串对象,不含有任何内容 | public String(char[] chs) | 根据字符数组的内容,来创建字符串对象 | public String(byte[] bys) | 根据字节数组的内容,来创建字符串对象 | String s = “abc”; | 直接赋值的方式创建字符串对象,内容就是abc |
创建字符串对象两种方式的区别【理解】字符串的比较【理解】==号的作用基本数据类型:比较的值 引用数据类型:对象==时,比较的是地址值.
equals方法的作用- public boolean equals(String s) 比较两个字符串内容是否相同、区分大小写
帮助文档查看String常用方法【记忆】[td]方法名 | 说明 | public boolean equals(Object anObject) | 比较字符串的内容,严格区分大小写(用户名和密码) | public char charAt(int index) | 返回指定索引处的 char 值 | public int length() | 返回此字符串的长度 | StringBuilder类概述【理解】 内容可变的字符串,理解为一个容器.做字符串拼接的时候,可以提高效率和节省内存. StringBuilder类和String类的区别【理解】StringBuilder类的构造方法【记忆】常用的构造方法 [td]方法名 | 说明 | public StringBuilder() | 创建一个空白可变字符串对象,不含有任何内容 | public StringBuilder(String str) | 根据字符串的内容,来创建可变字符串对象 |
帮助文档查看StringBuilder常用方法【记忆】[td]方法名 | 说明 | public StringBuilder append (任意类型) | 添加数据,并返回对象本身 | public StringBuilder reverse() | 返回相反的字符序列 | public int length() | 返回长度,实际存储值 | public String toString() | 通过toString()就可以实现把StringBuilder转换为String |
StringBuilder有一个功能完全一模一样的兄弟叫StringBuffer.构造函数,调用方法,所有的功能都是一样的.可以互相替代使用. StringBuilder他是线程不安全的,但是效率高. StringBuffer他是线程安全,但是效率低. DAY9-集合ArrayList类概述【理解】什么是集合 什么是集合:他就是一个容器,他的底层是一个可变的数组.你也可以把他理解为可变的数组. 然后他可以存储不同的数据类型 ArrayList集合的特点 长度是可变的,内容也是可变的. 索引是从0开始,到长度减一结束 集合有顺序的 泛型的使用 <>:集合一开始定义的时候,功能非常强大,可以在一个集合里面存储任意的引用数据类型.但是随着社会的发展,我们发现,一个集合应该只存一个类型,会方便一点.jdk7之后想了个办法,起了个叫泛型的东西,就说,以后加泛型,语法就规定只能存泛型的类型. !!! 增删改查
|