0
点赞
收藏
分享

微信扫一扫

JAVA零基础入门基础知识整理

凛冬已至夏日未远 2022-03-30 阅读 69

语言基础:

1. java开发环境:java是一款开源跨平台的编程语言
JVM:称为java虚拟机,加载并运行.class字节码文件
JRE:java运行环境 ,JRE=JVM+java系统类库
JDK: java开发工具,JDK=JRE+编译命令等开发工具
2.变量:可以改变的量称为变量
八种基本类型:
   baye:      短整型,适用于整数,范围-128--127,1字节。
  short:      短整型,适用于整数,范围-32768--32767,2字节。
    int:        整型,适用于整数,范围-21个多亿--21个多亿(2^31),4字节。
   long:      长整型,适用于整数,范围-(2^63)--(2^63)-1,8字节。
  float:单精度浮点数,适用于小数,但精度方面不足,范围很大,4字节。
 double:双精度浮点数,适用于小数,大概是flout精度的2倍,范围非常大,8字节。
boolean:      布尔型,输出结果只能为ture或false,1字节。
   char:      字符型,采用unicode字符,编码格式用单引号表示,2字节
类型之间的转换:
baye-->short-->char-->int-->long-->float-->double
从小到大,系统自动进行类型之间转换
从大道小,需要强制类型转换。(发生强制类型转换时,注意发生范围溢出)
注1:整数直接量直接给baye,short,char赋值即可。
注2:baye,short,char型进行运算时,系统会自动进行转换int操作。
3.运算符
        算数运算符:+,-,*,/,%  (加,减,乘,除,取余)
        比较运算符:>,<,>=,<=,==   (大于,小于,大于等于,小于等于,相等)
        逻辑运算符:||,&&,!=       (或,且,非) 
              赋值:=,+=,-=,*=,/=,%=
        字符串连接:+
          条件三目:boolean ?数1:数2 (true时输出数1,false时输出数2)
4.分支结构
if语法结构:
          单路分支:if(条件) {语句块};
          双路分支:if(条件) {语句块1}else{语句块2};
          多路分支:if(条件1){语句块1}else if(条件2){语句块2}else{语句块3}; 
                    ……
          多路分支:switch(整数条件){(整数条件是为了选择一个入口进入,然后一直执行到底) 
                    case0:语句
                    case1:语句
                    case2: 语句                }
5.循环结构:
          循环三要素:循环变量初始化,循环条件,循环变量的改变
          for循环:
                 语法:for(初始化;条件;改变){语句块循环体}
          while循环:
                 语法:while(boolean){语句块循环体}
          do……while循环:
                 语法:do{循环体}while(boolean)
          关键字: break:跳出循环(仅跳出当前循环)
                   continue:跳过循环体中剩余部分进入下一次循环。
          嵌套循环:循环中套循环(外层走一次,内层走全部)
6.数组: 数组是一种引用类型  相同数据类型的集合称为数组
       数组的创建:int[] a = new int[5];
                   int[] a = {1,2,3,4,5};
       数组的遍历:for(int i=0;i<a.length;i++){System.out.println(a[i])};
       用字符串输出查看数组内容:
                               import java.util.Arrays;
                               System.out.println(Arrays.toString(a));
  数组的扩容与缩减:
         import java.util.Arrays;
   扩容:int[] a = new int[5];
         a=Arrays.copyof(a,a.length+1);
   缩减:a=Arrays.copyof(a,a.length-1);
7.方法:
                      五要素
       定义方法:修饰词 返回值类型 方法名(参数列表){方法体}
  方法的调用:
            无返回值:方法名(有参传参)
            有返回值:数据类型变量 = 方法名(有参传参)
  方法的结束:return; 结束方法的执行; 
              return 返回值; 结束方法并返回值;         
面向对象
1.类和对象
          定义:    类:类型,代表一个类的整体。
                  对象:软件中真实存在的单个个体/东西。
          关系:类是对象的模子,对象是类的具体的实例。
  类中可以包含:对象的属性/特征------成员变量
                对象的行为/动作------方法
                一个类可以创建多个对象
2.方法的重载
            定义:发生在同一类中,方法名相同,参数列表不同。
编译器在编译时会根据方法名的签名自动绑定方法。
3.构造方法
          定义:与类同名,没有返回值类型(连void都没有)
          作用:给成员变量赋初始值。
注:在创建(new)对象时被自动调用
    若自己没有写构造方法,则编辑器默认提供一个无参构造方法;
    若直接写了构造方法,则不在默认提供。
4.this
      this:指代当前对象,哪调用就指哪。
      用法:this.成员变量名------访问成员变量
     ( 注:当成员变量名与局部变量名一样时,若想访问成员变量,则this不能省略) 
解释成员变量与局部变量:
                      成员变量:写在类中,方法外……有默认值。
                      局部变量:写在方法中……………没有默认值。
5.引用类型数组
      引用类型数组与基本类型数组的区别:
             给数组元素赋值必须new一下。 
             若想访问对象数据必须通过数组元素打点。
6.继承
      作用:实现代码复用。
  使用方法:通过extends来实现继承
  超类:共有的属性和行为。
  派生类:特有的属性和行为。
  [解释说明:1).派生类既可以访问自己的也可以访问超类的,但超类不能访问派生类的。
             2)一个超类可以有多个派生类,一个派生类只能有一个超类。---单一继承原则
             3)超类和派生类----具有传递性。
             4)java规定:构造派生类之前必须先构造超类。  ]
7.super
      super:指代当前对象的超类对象
       用法:1)super.成员变量名--------访问超类的成员变量
             2)super.方法名()--------调用超类方法
             3)super()---------------调用超类的构造方法
(注:1.在派生类的构造方法中若没有调用超类的构造方法,则默认super()调用超类的无参构造方法。
      ;在派生类的构造方法中若自己调用了超类的构造方法,则不再默认提供
      2.super()调用超类构造方法,必须位于派生类构造方法的第一行)
8.向上造型:超类型的引用指向派生类的对象。
            能点出来什么,看引用的类型。
9.方法的重写
           定义:发生在父子类中,方法名相同,参数列表相同。
  重写遵循"两同两小一大"原则
           两同:1)方法名相同 2)参数列表相同
           两小:1)派生类方法的返回值类型小于或等于超类方法的
                     1.void和基本类型时,必须相等
                     2.引用类型时,小于或等于
                 2)派生类方法抛出的异常小于或等于超类方法抛出的异常。
           一大:派生类方法的访问权限大于或等于超类方法的访问权限。
10.package和import
          package:声明包
(避免类的命名冲突;同包中的类不能同名,但不同包中的类可以同名;
  类的全称:包名.类名;包中常常用层次结构,建议所有字母小写)
          import:导入类
(同包中的类可以直接访问,不同包中的类不能直接访问;
  若想访问:先import声明类,在访问类)
11.访问控制修饰符
            作用:保护数据的安全。
     public:公开的,任何类
  protected:受保护的,本类,派生类,同包类
     默认的:什么也不写,本类,同包类
    private:私有的,本类
  (解释说明:---类的访问权限只能是public或默认
              ---类中成员的访问权限如上4中都行
              ---访问权限由高到低依次是:public->protected->默认->private)
12.static:静态的
    静态变量:由static修饰;属于类,存储在方法区,只有一份;常常通过类名点来访问。
    静态方法:由static修饰;属于类,存储在方法区,只有一份;常常通过类名点来访问,
              静态方法中没有隐式this传递,不能直接访问实例变量。
      静态块:由static修饰;属于类,在类被加载期间自动执行,一个类只被加载一次,
              所以静态块只执行一次。
13.final:最终的,不可改变的
      修饰变量:变量不能被更改。
      修饰方法:方法不能被重写。
        修饰类:类不能被继承。
14.static final常量
      必须声明同时初始化。
      类名点来访问,不能被改变
  建议:常量名所以字母都大写,多个单词用_分隔
      编译器在编译时会将常量直接替换为具体的数,效率高。
    何时用:数据永远不变,并且经常使用。
15.抽象方法
                由abstract修饰;只有方法的定义没有具体的实现(连{}都没有)
16.抽象类
             由abstract修饰;包含抽象方法的类必须是抽象类
             抽象类不能被实例化(new对象);
             抽象类是需要被继承的---派生类--重写所以抽象方法--变不完整为完整
                             --也声明为抽象类
抽象类的意义:封装共有的属性和行为----代码复用
              为所有派生类提供统一的类型----向上造型
              可以包含抽象方法,为所有派生类提供统一的入口(能点出来)
   派生类的行为不同,但入口是一致的,同时相当于定义了一个标准(强制重写)
17.成员内部类
                   类中套类,外面的称为外部类,里面的称为内部类;
                   内部类通常只服务于外部,对外不具备可见性;
                   内部类对象通常是在外部类中创建的;
                   内部类中可以直接访问外部类的成员(包括私有的)。
18.匿名内部类:--大大简化代码。
                          若想创建一个类(派生类)的对象,并且对象只创建一次,建议做匿名内部类。
                          匿名内部类默认外面的变量是final的。
                          每一个类都有独立的.class字节码文件。
19.接口:是一种引用数据类型,由interface定义,只能包含常量和抽象方法,
              接口不能被实例化(new对象),接口是需要被实现/继承的。
              实现类/派生类:必须重写所有抽象方法;一个类可以实现多个接口,用逗号分隔,
              若又继承又实现时,应先继承后实现;接口可以继承接口。
              接口的意义:实现多继承;制定了一套标准、规则。
20.多态
           意义:同一类型的引用指向不同的对象时,有不同的实现--所有抽象方法都是多态的
           同一个对象被造型为不同的类型时,有不同的功能--所有对象都是多态的
    向上造型/自动类型转换:超类型的引用指向派生类的对象;能点出来什么,看引用的类型;
    能造型成为的数据类型有:超类+所实现的接口;
   注: (强制类型转换,成功的条件:引用所指向的对象;引用所指向的对象,实现了该接口或继承了该类
    强转时若不符合条件,则发生ClassCastException类型转换异常;建议在强转之前先通过instanceof判断引用的对象是否是该类型)
     关系:
              类和类-------继承extends
              接口和接口---继承extends
              类和接口-----实现implements
21.内存管理:由JVM来管理
                          堆:存储new出来的对象(包括实例变量)
                       垃圾:没有任何引用所指向的对象;
                                 垃圾回收器(GC)不定时到内存中清扫垃圾,回收过程是透明的(看不到的),
                                 不一定一发现垃圾就立刻回收,通过调用System.gc()可以建议JVM尽快调度GC回收。
实例变量的生命周期:创建(new)对象时存储在堆中,对象被回收时一并被回收。
                 内存泄漏:不再使用的对象没有被及时的回收,严重的泄漏会导致系统的崩溃。
                           注:(建议:不再使用的对象应及时将引用设置为null)
                           栈:存储正在调用的方法中的局部变量(包括方法的参数)。
                                 调用方法时,会在栈中为该方法分配一块对应的栈帧,
                                 栈帧中存储局部变量(包括方法的参数),方法调用结束时,
                                 栈帧被自动清除,局部变量一并被清除。
局部变量的生命周期:调用方法时存储在栈中,方法调用结束时与栈帧一并被清除。
                    方法区:存储.class字节码文件(包括静态变量、所有方法);方法只有一份,通过this来区分具体的访问对象。
22.面向对象总结
面向对象三大特征:
                         1)封装:
                                 类:封装的是对象的属性和行为。
                              方法:封装的是具体的业务逻辑功能实现。
             访问控制修饰符:封装的是具体的访问权限,以保护数据的安全。
                         2)继承:
                              作用:代码复用。
                              超类:所有派生类所共有的属性和行为。
                              接口:部分派生类所共有的属性和行为。
                           派生类:派生类所特有的属性和行为。
                           单一继承、多接口实现,具有传递性。
                         3)多态:
                        行为多态:所有抽象方法都是多态的(通过方法的重写实现的)
                        对象多态:所有对象都是多态的(通过向上造型来实现)
                                       向上造型、强制类型转换、instanceof判断
23.String入门
String:字符串类型;java.lang.String使用final修饰,不能被继承。
java中的String在内存中采用Unicode编码方式,任何一个字符占用两个字节的编码。
字符串底层封装的是一个字符数组。
字符串一旦创建,对象内容永远无法改变,但字符串引用可以重新赋值---不变对象。
24.String常用方法:
ength():获取字符串的长度(字符个数)trim():去除当前字符串两边的空白字符。
toUpperCase()和toLowerCase():将当前字符串中的英文部分转为全大写/全小写。
startsWith()和endsWith():判断当前字符串是否是以给定的字符串开始/结尾的。
charAt():返回当前字符串指定位置上的字符---根据下标找字符。
indexOf()和lastIndexOf():检索给定字符串在当前字符串中的开始位置---根据字符串找位置。
substring():截取当前字符串中指定范围内的字符串。
String的静态方法valueOf():将其它数据类型转换为String。
25.StringBuilder类:
                          由于String是不变对象,每次修改内容要创建新对象,因此String不适合做频繁修改操作,
                          为了解决这个问题,java提供了StringBuilder类。
                          StringBuilder是专门用于修改字符串的一个API,内部维护一个可变的char数组,
                          修改都是在这个数组上进行的,修改速度、性能优秀,并且提供了修改字符串的常见的方法:增、删、改、插。
StringBuilder常用方法:
append():追加内容
replace():替换部分内容
delete():删除部分内容
insert():插入内容
reverse():翻转内容

举报

相关推荐

0 条评论