JAVA基础笔记

常量

生活上大家平时接触到的不容易发生变化的数据

      姓名 年龄 身高

  数据: 基本 + 引用

  基本:整形,浮点型,字符型,布尔型

  整形:30 25 20

  浮点型:1.56 95.2 3.14

  字符型: 首先要加一个单引号‘’

            如 '爱护' 'A' 'a'

    只能表达单个字符,不能是空字符

  布尔型:真假  4>3 真true 假false

  引用:

  在Java中有千万种

  例如:欢迎您 Java ---String字符串

  在文本值的左右两边分别加上双引号

  表达形式:整形

      小数

      字符

      布尔

      字符串

      null 引用类型值

switch case 语句

语法结构:

定义一个需要参与判定的变量switch (变量名){

  case 变量值1:

执行语句

    【break】;  case 变量值1:

执行语句

    【break】;  default:

    执行语句    break;}

  加载方式:

  就是让变量名的值依次来匹配wsitch当中的case对应的变量值,如果匹配上,

就加载对应的变量值,如果匹配不上,就不加载

  备注:如果在switch case语句中没有添加break语句,那么swith就会发生穿透现象

/*

if else 语句

中的布尔表达式可以表达有多个

中间使用逻辑运算符进行连接即可

比如闰年的判断  年份是否能整除4并且不能整除100 或者年份能够整除400

*/

Scanner类

功能: 主要就是往控制台中录入相应类型的数据

浮点整数 字符串 布尔类型 字符

该类jdk官方提供的类

使用其他类的时候,判断该类是否在同包下

如果在同包下,直接使用该类

如果不在同包下,需要引入该类对应的包

如:import java.util.Scanner;

表达方式:在package关键字的下面 import 该类的全路径

类的全路径 = 包名 + 类名 Scanner类的全路径------- java.util.Scanner

ty类的全路径--------com.ty

java程序常用包:

1 java.lang language 语法语言包,该包下的类不用导包 2 java.util java的工具包 工具类 3 java.io java的io流包 主要用于文件的读写操作 4 java.sql java的sql处理的包 针对连接数据库jdbc动作 5 java.net java的网络包 网络协议TCP UDP IP 网络通信socket Server Socket

6 java.text java文本处理包 对日期和字符串之间的转换SimpleDateFormat

7

使用: 1 需要创建该类的对象

表达语法;: Scanner scanner = new Scanner(System.in);

2 该对象中提供了很多功能 nextInt()  录入整数类型数据 nextDouble()  录入浮点类型数据 nextLine()  录入字符串类型数据 next()  录入字符串类型数据(没有换行)

备注: 1 对于Scanner类当中的nextXXXX()方法 如果在输入时使用空格,那么系统会自动 2 对当前输入的值进行分割 如果空格有大于等于1个,那么会自动给后面的next分配他的值

Random类

功能:主要是随机一个数(整数,小数)

当前Random类不在com.ty包下面

所以也需要导包

语法格式:import java.util.Random;

使用:1 创建Random类的对象Random random = new Random();

2 使用该对象当中的功能nextInt(int bound) 随机一个[]的整数nextDouble() 随机一个[0.0,1.0]的小数

循环结构:

程序的默认结构是顺序结构

      循环结构是Java程序当中的一个很重要的结构

在有限范围内做重复动作

    有三种表达形式:    for语句结构 while语句结构 do-while语句结构

for语句结构:

      语法结构      for(初始语句;循环语句;迭代语句){

      //循环体

      。。。。。}

      初始语句:定义循环变量 自变量int index = 0 ;

      循环进入语句:  判断当前循环是否能够继续执行index < 10

                    循环变量满足布尔表达式就会进入循环表达式,

如果不满足就跳出循环表达式

      迭代语句:  让循环变量可以产生变化的语句 index++ 就是index变量每次递增1

          index-- 就是index变量每次递减1    index+=2  就是index变量每次递增2

      循环体:就是循环结构中真正执行的代码块内容

      备注:      for语句结构上的1 2 3 可以移动位置,不放在for里面,

      只要保证for()内有两个分号 

while语句结构:

  语法格式:  1 初始语句  while(2 循环进入布尔表达式){

  3 循环体  4 迭代语句}

  备注: 迭代语句位置可能在循环体代码上面,也可能在循环体代码下面

sdo-while循环结构:

语法结构:1 初始语句do{

    4 循环体代码    3 迭代语句  }while(2 )

跳转语句 

 break语句 打断 中断 continue语句 继续

备注: break语句 除了可以使用在循环结构上,

          还可以使用在switch case选择结构上 continue 只是结束本次循环,循环并不终止

          循环结构也是支持嵌套表达 break语句如果使用在循环结构上,它只能结束它所在的循环结构

如果想要跳出指示的循环结构,可以使用带标签的跳转语句

语法格式:

标签(标识符):循环结构(){

          循环结构(){

break

continue 和break都支持该表达方式


变量:

数据类型之间的转换 类型之间是有包含关系

  范围小的可以向范围大的进行转换 自动转换/隐性转换byte < short< int< long< float

  范围大的向范围小的转换,  强制转换 /显示转换

  备注:  1 如果范围大的变量再往范围小的类型进行转换时,

  如果本身值超过了范围小的表示范围 不建议转换 因为精度会损失  2 ASCII编码表只能识别常规的字符,【0,127】

对于一些特殊的图标、图形、符号不能识别

  字符0对应空字符  字符32对应空格  3 Java程序当中字符之间是可以是可以直接进行四则运算的  4 windows系统对于汉字如果是UTF-8站三个字节 g'b'k中占两个字节  5 所有编码表都支持ASCII编码表  6 char 类型的最大整数是65535,包含了一个0

运算符

  赋值运算符:=

  比较(关系):  >大于  <小于  >=大于等于  <=小于等于 ==等于

    逻辑: &逻辑与 |逻辑或 !逻辑取非

逻辑运算符连接的是由比较运算符连接起来的表达式,结果依然是布尔类型值

    逻辑与& 前后要求同时为真true 结果才为true 否则为false

    逻辑或| 前后要求同时为假false 结果才为false 否则为true

    取非! 对前面的布尔表达式取相反结果

    双符号运算 && || !!

在保留自身含有之外同时具有断路作用(如果前面的布尔表达式)

备注:1 赋值运算符和算术运算符结合使用可以省略强制转换2 比较运算符当中的>= <= 只要结果有一个成立就为true

3 =赋值  ==等于4 逻辑取非 只能对!后面的布尔表达式取相反结果,前面不能出现其他内容5 逻辑取非 如果是双运算符结果不变  逻辑与& 和逻辑或| 最多只能并排使用两个

位运算符

 &位与 |位或 ^位异或

三目运算符  ?:

运输语法格式:

布尔表达式 ? 布尔表达式为真结果  : 布尔表达式为假结果值

当不确定布尔表达式的真假时,可以使用三目运算符直接真假结果值一次性赋值

备注;

1 如果整数表达2 三目运算符的结果类型不确定,依据“?”和“:”后面放的值来判断的3 如果给三目运算符的结果值使用一个变量来接收的话,必须确定?和:后面值的类型

多元运算符:

元------涉及到有多少个操作数据

一元------  !+ - ++ --

二元------  + - * % /

数组:

    容器概念 容器主要就是把需要操作的多个数据提前存储起来

当后面需要的时候再从容器当中取出即可。

数组是一种容器 用来存储数据

数组当中的元素在数组中都有对应的位置-----索引(下标)

存储数据的时候,不能是混合类型,只能存储同一种数据类型的数据

数组容器它有规定的大小,数组容器一旦被数据创建出来只能存储它指定数量的数据

数组容器一旦规定了数量大小,那么里面必须存储数据的,而且必须存满

构建一个数量为10的数组,我就可以让该数组当中存储10个数组

假如你有九个数据,第十个位置必须给他值,哪怕是一个没有意义的值

对于数组来说,取的时候,只要没有超过数组的长度大小,程序都是允许的

长度大小是固定的

动态扩容: 如果需要存储的数据超出了该数组的长度,使用动态扩容,

首先先获取原来数组的长度,然后构建一个(原来数的长度的大小+超过的个数)的数组

之后依次取出原来对应位置上的数组元素存储到新数组当中,之后把新元素存储到新数组的末尾位置

再之后把已经储存好的新数组赋值给原数组变量,就完成了动态扩容

使用:1 

创建数组的两种方式:动态创建,静态创建  1.1 动态创建  数组元素数据类型[] 数组名称 =new 数组元素数据类型[长度]

            创建一个int类型的数组int[] arr = new int[3];

            如果你定义的是int整形 存储的元素值为0

double      0.0

              char      空格boolean    null

  1.2 静态创建语法格式: 数组元素数据类型[] 数组名称 = {元素值1,元素值2,元素值3......}

      如果你填写了5个元素值,那么该数组的长度为5

      如果你填写了7个元素值,那么该数组的长度为7

  1.3 静态和动态结合      new 数组元素数据类型[]{元素值1,元素值2,元素值3..}    省略数组名称创建数组

2 存储(修改)和取出元素操作

  语法格式: 数组名称[索引下标值]

  备注:1索引下标值只能是整形,不能是浮点型        2索引下标取值范围:[0,数组名称.length-1] 0对应第一个位置 1对应第二个位置

3 计算 

 3.1 计算数组容器当中元素的最大值

实现思路: 依次从数组当中取出元素和当前的最大值进行比较大

      值留下经过n次比较之后,得出当前数组当中的最大值  

 3.2计算数组当中元素的最小值实现思路:类似于求最大值  

 3.3 计算数组当中元素的总和值    累加值  3.4 计算数组当中元素的平均值    总和值÷数组元素的个数4 数组的增删改查  crud开发工程师c----增加元素c creat

r----检索/查找r retrieve

u----修改元素u update

d----删除元素  d delete

定义数组格式

    数组元素的数据类型[] 数组名称 = new 数组元素数据类型[长度];

    自定义的数组其实是Java当中的引用类型Array的衍生品

    从中获取了一个length类型

数组它也是一种引用数据类型int[] double[] String[]

数组当中存储的元素的类型也可以是引用数据类型

动态创建

数组元素的数据类型[] 数组名称 = new 数组元素类型[];

静态创建

数组元素的数据类型[] 数组名称 = {元素值1,元素值2,......}

静态创建方式 必须在一行语句上完成, 不能拆分两行语句来完成

数组赋值

数组工具类Arrays

常用功能:sort(array)对当前传入的数组进行升序排序binarySearch(array,value)查找指定元素value在指定数组array

当中储存位置(下标值)----前提条件是有序的

该功能有一个结果值,是一个int类型值,需要有一个变量去接收toString(array) 对当前数组转换成一个字符串类型的值,

这个值的内容就是数组当中的每一个元素值

该功能也有一个结果值,是一个String类型值,需要有一个变量去接收

使用功能:

语法格式: Arrays.功能名称();//如果()里面有信息,

        就传入想要的信息值,如果没有,就不传入

动态扩容

int[] arr ={19,20,21};

int ar =arr.length;

int[] new_arr =new int[ar+1];

new_arr[1-1] =arr[1-1];

new_arr[2-1] =arr[2-1];

new_arr[3-1]=arr[3-1];

new_arr[4-1]=18;

arr =new_arr;

Arrays.toString(arr);

String ar1 =Arrays.toString(arr);

System.out.println(ar1);

二维数组:

二维数组也可以理解成一个一维数组

语法格式:

    动态方式:  数组元素数据类型[][] 数组名称= new int[m][n];

                  m-----二维数组的长度                  n-----二维数组中元素的长度  可以为空

      静态创建:  数组元素数据类型[][]  数组名称 ={{元素值1},{元素值2}};

    修改和取出元素:

          数组名称[下标值]-----从该二维数组当中取出的对应的一维数组

          数组名称[m][n]-----从该二维数组当中取出m对应的一维数组的n元素

面向对象oop

        java语言是一种面向对象编程的开发语言

  面向对象------类class

  类: 物以类聚人以群分

      我们会把一些相似的或者相同的一些功能或者事物,集中性储存在同一个地方(class)

      还有一些相似或者相同的特征的事物集中在一起 还可以把它理解成一种模式,模板      class类它是我们Java程序当中的最小的组成单元或者单位(类文件当中)

对象:对象就是通过类实例化构建出来的一个个具体的事物

通过对象来调用类当中定义的那些相似或者相同的功能,或者是那些相似或者

相同的特征,来完成功能开发或者需求开发

    构建类的对象语法格式 : 

类名  变量名(对象名) new 类名();

    在类当中主要的内容是功能,函数-----方法method  function函数

    比如说计算指定范围内前n项的和 功能一

比如说计算指定范围内有多少水仙花数  功能二

方法定义的语法格式:

四要素: 修饰符 返回值类型  方法名称 方法参数

        修饰符 返回值类型 方法名称(参数数据类型 参数名称1,参数数据类型参数名称2.......)

    方法右边跟的{}------方法体----该方法的作用域

注意事项:

    类当中的方法它定义的位置,应该在类的里面,main方法的外面

    方法内部不能重复声明定义其他方法----嵌套

方法它只能是一种并列关系

修饰符:

    修饰限定方法使用 访问权限控制的 静态的static 最终的final....

返回值类型:

该方法执行完之后,需不需要给方法的调用者返回一个结果值。

如果需要返回的,定义对应的返回值的数据类型 如果不需要返回的,

    那么我们可以定义空参数 使用关键字void

    返回值的数据类型:基本+引用(String,数组)+void

    备注:  

  void它只能作为方法返回值的数据类型,不能作为其他事物(对象)

的数据类型,只能出现在方法声明的格式上

方法名称:  它就是一个标识符

方法参数:  参数列表

    参数的数据类型:基本+引用

参数的名称:它也是一个标识符 见名知意

方法类型格式:四种        1 无返回值 无参数        2 有返回值 无参数        3 无返回值 有参数        4 有返回值 有参数

在启动类程序时,程序只会加载main方法当中的信息,

不会加载main以外的信息,如果想要加载main方法以外的信息,需要

进行引用声明,把main外的信息在main方法中声明一些

声明格式:

        方法名称(参数值1,参数值2,...);

如果该方法有返回值,一般情况下需要接收方法的返回值

定义一个变量来接收 方法名称(参数值1,参数值2,...).var 回车让系统生成

变量数据类型 变量名称 =(参数值1,参数值2,...);

方法重载:

如果在程序当中定义的方法功能是一样的,只是因为方法当中的阐述列表当中

      参数类型不同,Java系统允许这多个方法共有一个名字

减少开发者记忆类功能名字的作用

影响方法重载的因素是  参数列表(参数个数,参数顺序,参数类型)

只要有三者有一个不一致就不行。

      修饰符,返回值类型不会影响方法重载,

方法的返回值

    如果方法有返回值,我们是一定要添加返回语句

返回语句格式: return 返回的具体值; 返回值必须要和方法声明格式上的保持一致

return关键字

它的主要作用是作为方法的返回来使用的

返回类型:

      空返回

        表达形式: return;

        当方法声明的格式确定是没有返回值的(void)

        使用return; 表达形式是用来结束方法程序的

带值返回

      当方法声明的格式上确定是有定义的返回值类型(不是void),

      使用return具体的返回值;给当前方法一个指定值,同时他也

      有结束方法程序的作用

类当中的属性

相当于类的特征 描述该类的特征信息

在语法上类似于我们之前学习的变量

属性等价于成员变量,全局变量,实例变量

属性定义的语法格式:

    属性数据类型  属性名称[ =属性值];                  [= 属性值];是一种可选操作

调用类当中的数据语法格式:

需要借助对象:

      创建对象的语法格式: 类名称 对象名称 = new 类名();

备注:

    类当中的属性,如果开发者没有手动赋值,Java程序会自动给类赋值

    完成初始化,根据属性定义的数据类型:int        0

double    0.0

    char      空格boolean    false

    引用类型null

属性主要是用来描述对象特征

类的定义

 [public] class 类名{

        定义属性 实例变量,全局变量,全局变量,成员变量 一个意思

        属性数据类型 属性名称 =[属性值];//...

        //定义成员方法/实例方法/普通方法/非静态方法  一个意思

        方法定义四要素:        [修饰符] 返回值类型  方法名称1(参数数据类型 参数名称1,参数数据类型 参数名称2.。。。){

        } 具体业务逻辑        [修饰符] 返回值类型  方法名称2(参数数据类型 参数名称1,参数数据类型 参数名称2.。。。){

        } 具体业务逻辑

局部变量和全局变量的不同之处:    1,定义的位置不同:局部变量是定义局部范围内(方法内),

      全局变量是定义在类中,方法外    2.初始化不同,对于局部变量来说,局部变量未赋值不能直接

使用(局部变量不会自动初始化),全局变量如果没有赋值,系

    统会自动赋一个默认值    3,生命周期:一个对象在程序当中(内存当中)从生到死的过程

局部变量一般定义方法内,从该方法被调用开始,到该方法从栈中

弹出时消亡,

全局变量从它所在的对象被创建时开始存在,到该对象从堆当中被

    垃圾回收器(gc)回收时消亡    4,存储的位置不同:局部变量大多存储在(方法栈)栈中,

全局变量一般存储在堆当中。

封装特性:    

 1.隐藏把功能的一些实现细节隐藏掉,对外提供功能接口,对第三方开发者

    或者使用用户来说,比较方便,大大提高了后续开发的效率,    2.可以提高代码的复用性,

广义封装:

对程序当中任何高频重复性的代码进行提取的动作,都认为是一种封装

工具类的概念

工具方法(通用方法)

狭义封装:

对类当中的属性进行封装

      使用关键字private

      提供对应的Getter和Setter方法      Getter方法是用来在外类中获取该类当中对应的属性值

      固定写法:  public 属性对应的数据类型 get属性名称[首字母大小](){

                  return;}

      Setter方法是用来在外类当中设置该类中对应的属性值

      固定写法: public void set属性名称[首字母大写](属性对应的数据类型 属性名称){

      this.属性名称 = 属性名称;}

构造方法:

作用:主要是用来创建类的对象(完成类的实例化)

次要作用:

在完成类的实例化的时候,对类当中定义的私有属性进行初始化(赋值)

构造方法定义的语法格式:  public 当前类名(属性的数据类型 属性名称1,属性的数据类型 属性名称2....){

  如果方法上面有参数,需要使用this关键字  this.属性名称1 =属性名称1;  this.属性名称2 =属性名称2;  this.属性名称3 =属性名称3;........

}

  构造方法的特点:  

1 构造方法声明格式上没有具体的返回值类型  不可使用void

  (是因为该方法的返回值类型是确定的,返回值类型唯一)  2 构造方法名称需要和当前类名完全保持一致,大小写完全相同

  (假如你类名写的不规范如首字母小写,那么构造器方法也要小写  3 构造方法是支持方法重载(构造方法可以在类当中定义多个)  4 构造方法修饰符一旦使用private修饰,意味着该类不能直接

在外类当中进行实例化,一般情况下需要该类当中调用其他方法

    完成实例化  5 构造方法如果在该类当中没有定义过,不影响开发着进行该类的

实例化(系统会添加一个默认的构造方法),一旦你定义了其他的

    构造方法那么系统会删除添加的默认构造方法--空参构造,需要开

    发者手动添加this关键字:

    该关键字是用在方法当中,该方法不能是一个static修饰的方法

    比如main方法就是一个static修饰的关键字

意义:

当方法格式上有参数传递时,参数名称和类当中的属性名称重名了

    按照Java当中的就近原则,优先使用方法声明上参数,单是对于开

    发者来说使用的是类当中定义的属性,就需要使用this关键字来声

    明它是属性,而不是一个参数

Getter方法

是用来在外类中获取该类当中对应的属性值

      固定写法: public 属性对应的数据类型 get属性名称[首字母大小](){

                return;}

  Setter方法

是用来在外类当中设置该类中对应的属性值

      固定写法:public void set属性名称[首字母大写](属性对应的数据类型 属性名称){

      this.属性名称 = 属性名称;

Java Bean

创建一个类的时候,这个类如果主要是用来存储数据的

一般需要按照以下方式进行定义:

    类的定义需要是公共的  public class 类名{}

    类的属性必须是私有的 private 属性数据类型 属性名称;

    类当中必须提供Getter和Setter方法  ALT+insert 快捷键生成

    类当中必须有该方法  public 类名(){}

以下信息可以非标准的

    类当中还需提供该方法 public 类名(声明全部的属性参数信息)    {需要对类当中所以的属性都进行赋值  this.属性名称=属性名称;}

    该类还需要实现 public class 类名implements Serializable{}

    该类改需要提供 public String toString(){return 属性名称“”+属性名称}

    如按照以上方法定义出来的类,就叫做JavaBean

    Bean---(bean)描述Java的人家组件模型(Enterprise Java Bean)    Java模型类 model 类 实体类------不参与业务逻辑,只存储数据

继承:

      继承是Java当中的第二个重要特性:extends关键字----扩展

      对相同的代码进行抽取----工具类的概念---封装

让多个有重复性的类产生关联性 继承关系

把重复性的代码放到共有类当中,让其他类去继承这个共有类

特点:

      一个class子类只能有一个直接父类,

通过继承子类可以获取到父类当中所有的成员信息

  变量特点:      

1 当父类的成员变量是私有的,子类虽然有父类的成员变量,但是是不能直接使用的。只有当父类的成员变量非私有,子类才可以直接使用      2 如果子类定义了相同的成员变量,那么子类在使

        用时,优先使用的是自己定义的成员变量      3 如果子类定义了相同的成员变量,那么如果想要 使用父类的成员变量,使用关键字super来调用

父类当中的成员变量

继承关系的成员方法特点:      1 如果父类的成员方法是私有的,那么子类是不能

      使用的,如果父类的成员方法非私有,那么子类可以      2 如果子类定义了相同的成员方法,这种叫方法重写

(覆盖),改变原来内容,重新定义,子类调用该方

法时,优先调用的是子类重写后的方法,如果该方法

      没有,那么它会层层往父类当中去查找。      3 使用idea工具在进行方法重写提示时,idea工具会

      自动添加一个注解@Override,表明修饰的方法是来源

      于它的父类      4 如果子类想要使用父类当中的方法,需要使用super

      关键字来进行调用。      5 如果你既想要保留父类原有的功能,又想要进行功能

      扩展,那么可以在方法重写内容首先执行super.(父类)方法

备注:

如果在进行方法重写时,你修改父类的方法参数

(参数个数,类型,顺序),系统会判定这是一个新

方法,此时在进行方法重载,而非方法重写

如果在进行方法重写时,你修改的不是方法参数,而是

方法的修饰符和返回值类型,此时程序判定这是一个相

同方法,同一个方法是不能定义的,此时是一个非法操

使用继承语法格式:      class 类名(子类) extends 类名(父类){}

      superclass父类  subclass子类

假设a类有吃喝拉撒睡 ,b类当中也有吃喝拉撒睡----删除a类当中

        的吃喝拉撒睡睡功能,让a类 extends b类

假设A类当中有吃喝学习工作  B类当中有吃喝抽烟赌博,创建一个共有类

删除A类当中的吃喝功能,删除B类当中的吃喝功能

让A类extends C类; 让B类extends C类;*/

//被public修饰的类名必须和所在的类文件名称保持一致

//一个类文件当中只能有一个被public修饰的类

凡是被static修饰的----static context

  静态信息只能在静态的环境中使用,如果想要

在静态环境中使用非静态信息只能通过对象来

使用,对于非静态信息一般使用在非静态环境

  中,如果使用静态信息可以直接使用

方法重写

在子类进行方法重写时,必须保证子类声明的方法格

式与父类定义的方法格式一致,方法重写是通过方法

名称来进行匹配的

如果子类在方法上添加不同的方法参数,系统会判定

当前这个方法是一个新方法,此时在进行方法重载

0人点赞

日记本

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值