A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 那个谁。 初级黑马   /  2019-9-21 19:27  /  601 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

技             术
一. 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]
数据类型
关键字
内存占用
取值范围
整数型
byte1-128 ~ 127(负的2的7次方 ~ 2的7次方-1)
short2-32768~32767
int4-2的31次方到2的31次方-1
long8-2的63次方到2的63次方-1
浮点型
float4负数:-3.402823E+38到-1.401298E-45                                                             正数:   1.401298E-45到3.402823E+38
double8负数:-1.797693E+308到-4.9000000E-324                                              正数:4.9000000E-324   到1.797693E+308
布尔型
boolean1true,false
字符型
char20-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
  • 概述:
    系统随机给我们产生一个随机数
  • 使用步骤:

    • 导包
      import java.util.Random
    • 创建对象
      Random r=new Random();
      3.int a=r.nextInt(整数);
      解释:整数代表着我想去0-这个整数之间的随机数,包头不包尾.


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;

空指针异常
  • 出现原因
    public class ArrayDemo {    public static void main(String[] args) {        int[] arr = new int[3];​        //把null赋值给数组        arr = null;        System.out.println(arr[0]);    }}
    总结:NullPointerException,如果出现这个问题,我们就需要考虑我们的对象地址是不是不存在了.

数组遍历【应用】
  • 数组遍历:就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。
    public class Demo{    public static void main(String[] args) {        int [] arr = {1,2,3,4,5,6,7,8,9};        for (int i = 0; i < arr.length; i++) {            System.out.println(arr);        }        for (int i = arr.length-1; i >=0; i--) {            System.out.println(arr);        }    }}
总结数组
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是一个修饰符,可以用来修饰成员(成员变量,成员方法)
  • 被private修饰的成员,只能在本类进行访问,针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作

    • 提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰
    • 提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰

    public:也是一个权限修

this关键字【应用】
this:为了解决局部变量和成员变量重名的问题
就近原则:你使用的变量他表示的是离使用最近的那个定义的变量.
那么我们区分成员变量和局部变量的在一个方法里都要使用的时候,this.变量名表示的就是成员变量.
不加this表示的就是局部变量.
this:谁调用我this就表示谁.
封装思想【理解】
  • 封装概述 是面向对象三大特征之一(封装,继承,多态) 是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的
  • 封装原则 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 成员变量private,提供对应的getXxx()/setXxx()方法
  • 封装好处 通过方法来控制成员变量的操作,提高了代码的安全性 把代码用方法进行封装,提高了代码的复用性

构造方法概述【理解】
构造方法是一种特殊的方法
  • 作用:给创建的对象初始化用的
  • 格式:public 类名(参数列表){
  • }
  • 功能:完成对线的初始化,创建对象自动去调用对应的构造函数.

构造方法的注意事项【理解】
  • 构造方法的创建:首先如果我们没有手动书写构造方法,系统默认提供一个无参构造,如果你写了一个有参构造,系统默认提供的无参构造将会失效,如果我非要再使用无参,我们必须手动书写一个无参构造.

  • 构造方法的重载:可以重载,可以书写多个参数列表不同的构造函数

  • 推荐的使用方式:无参+满参

  • 重要功能!

DAY8-常用api1API概述【理解】
  • 什么是API
    ​        API (Application Programming Interface) :应用程序编程接口
  • java中的API
    ​        指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。

String类概述【理解】
​        String (Java SE 9 & JDK 9 )String类代表字符串。 Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。
String类的特点【理解】
  • 在java.lang包下,使用时不需要导包
  • 一旦创建,长度和内容就不能更改,可以共享
  • 效果上相当于字符数组,底层是字节数组.
  • 只要被双引号引起来的内容就是字符串,也就是String类的实例(对象),就可以使用String类的方法

String类的构造方法【记忆】
  • 常用的构造方法
    [td]
    方法名
    说明
    public   String()创建一个空白字符串对象,不含有任何内容
    public   String(char[] chs)根据字符数组的内容,来创建字符串对象
    public   String(byte[] bys)根据字节数组的内容,来创建字符串对象
    String s =   “abc”;直接赋值的方式创建字符串对象,内容就是abc

创建字符串对象两种方式的区别【理解】
  • 通过构造方法创建
    ​        通过 new 创建的字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同
  • 直接赋值方式创建
    ​        以“”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM 都只会建立一个 String 对象,并在字符串池中维护

字符串的比较【理解】==号的作用
  • 基本数据类型:比较的值
  • 引用数据类型:对象==时,比较的是地址值.

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类的区别【理解】
  • String类:内容是不可以改变的
  • StringBuilder类:内容是可以改变的,不会产生新的对象.

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之后想了个办法,起了个叫泛型的东西,就说,以后加泛型,语法就规定只能存泛型的类型.
    !!!  增删改查


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马