java基础知识查漏补缺

                                                      这算是一个我自己弄的一个查漏补缺的小东西吧。。。

目录

java程序3个步骤:

常量:

数据类型:

变量:

数据类型转换:

强制类型类型转换:

数字和字符的对照关系表(编码表)

运算符等等的:

四则运算中的+号

自增自减运算符:只有变量才可使用,常量不行。

复合赋值运算符:

定义一个方法的格式:

java9里面的新特性,jshell

switch语句使用的注意事项:

方法:

方法的三种调用:

使用方法时的注意事项:

方法的重载:

数组:

使用动态初始化数组的时候,其中的元素将会自动拥有一个默认值:

java内存需要划分成5个部分:

一个数组的内存图:

两个数组的内存图:

两个引用指向同一个数组:

类与对象的关系:

局部变量和成员变量

面向对象三大特征:封装、继承、多态。

this关键字的作用:

private 关键字的作用及其使用:

构造方法:

一个标准的类通常要拥有下面四部分组成部分:


前言:是java9.但是其大部分特性都差不多啊。。语法也差不多= =emmm我只是想和其他稍微区分一丢丢。哦。。我是把自己稍微觉得,还需要再看看的知识进行了整理。。算是个人笔记了。这部分存放的应该是我觉得比较简单的java知识。

还有些东西没有添加上去,不代表只有那些哦!有些。。。懒得写。。+ 看视频还没复习到那里。。

如果是在同一个包中,就不需要导包语句。

不同包中,才需要导包语句。

java程序3个步骤:

编写源程序(.java源程序),编译源程序(.class文件  字节码文件),运行(JVM运行)

 

常量:

程序运行期间不发生改变的量。

1.字符串常量:双引号引起来的。

2.整数常量:直接写上的数字,没有小数点。

3.浮点数常量:直接写上的数字,有小数点。

4.字符常量:单引号引起来的。

5.布尔常量:只有两种取值:true\false  

6.空常量:null。没有任何数据

注意:空常量不能直接用来打印输出。

System.out.println(1024);   // 这就是一个整数,默认是int类型

System.out.println(3.14);    // 这就是一个浮点数,默认是double类型。

 

数据类型:

基本数据类型:整数型、浮点型、字符型、布尔型。(四类八种)

引用数据类型:字符串、数组、类、接口、lambda

注意:

1.字符串不是基本类型,而是引用类型。

2.浮点型可能只是一个近似值,并非精确的值。

3.数据范围和字节数不一定相关,例如float数据范围比long更加广泛,但是float是4字节,long是8字节。

4.浮点数当中默认类型是double。如果一定要使用float类型,需要加上一个后缀F(f)。

 如果是整数,默认为int类型,如果一定要使用long类型,需要加上一个后缀L(l)。推荐使用大写字母后缀。

long num6 = 3000000000;  //这样没加后缀的是会被报错的。

long num6 = 3000000000L;//这样的才是对的。

int 最高只能表示21个亿

 

变量:

程序运行期间,内容可以发生改变的量。

1.数据类型 变量名称;   //创建了一个变量

变量名称=数据值;     //赋值。

2.数据类型 变量名称=数据值;     //再创建一个变量的同时,立刻放入指定的数据值。

注意事项:使用变量时

1.如果创建多个变量,那么变量之间的名称不可重复。

2.对于float和long类型来说,字母后缀F和L不要丢掉,

3.如果使用byte或者short类型的变量,那么右侧的数据值不能超过左侧类型的的范围。

4.没有赋值的变量,不能直接使用;一定要复制之后,才能使用。

5.变量使用不能超过作用于的范围。

6.可以通过一个语句来创建多个变量,但一般情况不推荐。

 

数据类型转换:

1.当数据类型不一样时,将会发生数据类型转换。

自动类型转换(隐式)

       1.特点:代码不需要进行特殊处理,自动完成

       2.规则:数据范围从小到大

注意事项:

1.float num=30L;

左边float类型,右边long类型。long--->float,范围是float更大一些,所以符合从小到大规则。

 

强制类型类型转换:

       1.特点:代码需要进行特殊的格式处理,不能自动完成。

       2.格式:范围小的类型 范围小的变量名=(范围小的类型)原本范围大的数据

注意事项:

1.强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出。

2.byte/short/char 这三种类型都可以发生数学运算,例如加法“+”

3.byte/short/char 这三种类型在运算的时候,首先都会被提升成int类型,然后计算。

4.右侧数值大小不能超过左侧的类型范围。

5.boolean类型不能发生数据类型转换。

编译器优化注意事项:

1. 如果没有超过左侧范围,编译器补上强转。

对于byte/short/char三种类型来说,如果右侧赋值的数值没有超过范围

那么javac编译器将会自动隐含地为我们补上一个(byte)(short)(char)

byte num1=30;  //左侧是byte,右侧是int,但是自动补上了强转。

2.如果右侧超过了左侧范围,那么编译器报错。

3.在给变量进行赋值的时候,如果右侧的表达式中全是常量,没有任何变量,那么编译器javac将会直接将若干个常量表达式计算得到结果。

右侧的常量结果数值,没有超过左侧范围,所以正确。

这称为“编译器的常量优化”

但是注意:一旦表达式当中有变量参与,那么就不能进行这种优化了。

4.short a=5;

short b=8;

//short + short --> int + int -->int

short result = a+b;  //错误写法!左侧需要的是int类型。

 

数字和字符的对照关系表(编码表)

ASCLL码值:

48 0

65 A

97 a

 

运算符等等的:

运算符:进行特定操作的符号。

表达式:用运算符连起来的式子叫做表达式。

四则运算:+-*/

取模运算:只有对于整数的除法来说,取模运算符才有余数的意义。

注意事项:

1.一旦运算当中有不同类型的数据,那么结果将会是数据类型范围大的那种。

 

四则运算中的+号

1.对于数值来说,就是加法

2.对于字符类型char,在计算之前,char会被提升称为int,然后在计算

3.对于字符串String来说,加号代表字符串连接操作。

任何数据类型和字符串进行连接的时候,结果都会变成字符串。

String str="java";

System.out.println(str + 20 +30); //显示java2030

 

自增自减运算符:只有变量才可使用,常量不行。

 

复合赋值运算符:

+=    a=a+b;

-=    a=a-b;

*=    a=a*b;

/=    a=a/b;

%=    a=a%b

注意事项:

1.只有变量才能使用赋值运算符,常量不能进行复制。

2.复合赋值运算符其中隐含了一个强制类型转换。

 

定义一个方法的格式:

public static void 方法名称(){  方法体 }

方法名称的命名规则和变量一样,使用小驼峰式。

方法体:也就是一个大括号当中可以包含任意条语句。

注意事项:

1.方法定义的先后顺序无所谓。

2.方法的定义不能产生嵌套包含关系。

3.方法定义好了之后,不会执行的。如果想要执行,一定要进行方法的调用。

如何调用方法,格式:

方法名称();

 

java9里面的新特性,jshell

它是一个轻量级的小工具,用于操作简单的东西,不值得去保存的。

退出它  /exit

 

switch语句使用的注意事项:

1.多个case后面的数值不可以重复

2.switch后面小括号当中只能是下列数据类型:

基本数据类型:byte/short/char/int

引用数据类型:String字符串、enum枚举

3.switch语句格式可以很灵活:前后顺序可以颠倒,而且break语句还可以省略。

“匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止。”

 

 

方法:

若干语句的功能及和。

方法名称:方法的名字,规则和变量一样,小驼峰。

参数:进入方法的数据

返回值:从方法中出来的数据。

定义方法的完整格式:

修饰符 返回值类型 方法名称(参数类型 参数名称,。。。){

       方法体

       return 返回值;

}

return :两个作用,第一停止当前方法,第二将后面的返回值还给调用处。

return后面的返回值需要与方法的返回值类型保持一致。

 

方法的三种调用:

1.单独调用:方法名称(参数);

2.打印调用

3.赋值调用

注意:返回值类型为void,这种方法只能够单独调用,不能进行打印调用或者赋值调用。

 

使用方法时的注意事项:

1.方法应该定义在类当中,但是不能再方法当中在定义方法。不能嵌套。

2.方法定义的前后顺序无所谓。

3.方法定义之后不会执行,如果希望执行,一定要调用:单独调用、打印调用、赋值调用。

4.如果方法有返回值,那么必须协商“return 返回值”,不能没有。

5.return后面的返回值数据,必须和方法的返回值类型,对应起来。

6.对于一个void没有返回值的方法,不能写return后面的返回值,只能写return自己。

7.对于void方法当中最后一行的return可以省略不写。

8.一个方法当中可以有多个return语句,但是必须保证同时只有一个会被执行到。

 

方法的重载:

多个方法的名称一样,但是参数列表不一样。

好处,只需要记住唯一一个方法名称,就可以实现类似的多个功能。

方法的重载与下列因素相关:

1.参数个数不同

2.参数类型不同。

3.参数的多类型顺序不同。

方法重载与下列因素无关:

1.与参数的名称无关

2.与方法的返回值类型无关。

3.与修饰符无关

//在调用输出语句的时候,println方法其实就是进行了多种数据类型的重载形式

 

数组:

是一种容器,可以同属存放多个数据值。

特点:

1.是一种引用数据类型。

2.其中的多个数据,类型必须统一。

3.数组长度在程序运行期间不可改变。

数组的初始化:

1.动态初始化(指定长度)

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

2.静态初始化(指定内容)

注意事项:

虽然静态初始化没有直接告诉长度,但是根据大括号里面的元素具体内容,也可以推算出长度。

直接打印数组名称,得到的是数组对应的:内存地址哈希值。

 

使用动态初始化数组的时候,其中的元素将会自动拥有一个默认值:

规则如下:

如果是整数类型,那么默认为0;

浮点类型,默认0.0

字符类型,默认'\u0000'

布尔类型,false

引用类型,null

 

java内存需要划分成5个部分:

1.栈:

存放方法中的局部变量。方法的运行一定要在栈中运行

局部变量:方法的参数,或者是方法{}内部的变量

作用域,一旦超出作用域,立刻从栈内存当中消失。

2.堆

凡是new出来的东西,都在堆当中。

堆内存里面的东西都有一个地址值:16禁止。

堆内存里面的数据,都有默认值。规则:

整数类型,默认为0;

浮点类型,默认0.0

字符类型,默认'\u0000'

布尔类型,false

引用类型,null

3.方法区:

存储.class相关信息,包含方法的信息。

4.本地方法栈。与操作系统相关。

5.寄存器:与cpu相关。

 

一个数组的内存图:

(嗷,我这个截图的视频的!)

两个数组的内存图:

 

两个引用指向同一个数组:

copy的视频截图

 

 

类与对象的关系:

1.类是对一类事物的描述,是抽象的。

2.对象是一类事物的实例,是具体的。

3.类是对象的模板,对象是类的实体。

 

局部变量和成员变量

1.定义的位置不一样【重点】

局部变量:在方法的内部。

成员变量:在方法的外部,直接写在类当中。

2.作用范围不一样【重点】

局部变量:只有方法当中才可以使用,出了方法就不能再用了。

成员变量:整个类全都可以通用。

3.默认值不一样【重点】

局部变量:没有默认值,如果想要使用,必须手动进行赋值。

成员变量:如果没有赋值,会有默认值,规则和数组一样

4.内存的位置不一样

局部变量:位于栈内存。

成员变量:位于堆内存。

5.生命周期不一样

局部变量:随着方法进栈而诞生,随着方法出栈而消失。

成员变量:随着对象创建二诞生,随着对象被垃圾回收而消失。

 

面向对象三大特征:封装、继承、多态。

封装性在Java当中的体现:

1.方法就是一种封装

2.关键字private也是一种封装。

封装就是将一些细节信息隐藏起来,对于外界不可见。

 

this关键字的作用:

当方法的局部变量和类的成员变量重名的时候,根据“就近原则”,有限使用局部变量。

如果需要访问本类当中的成员变量,需要使用格式:this.成员变量名

“通过谁调用的方法,谁就是this”

 

private 关键字的作用及其使用:

1.一旦使用了private进行修饰,那么本类当中仍然可以随意访问,但是超出了本类范围之外,就不能再直接访问了。

2.间接访问private成员变量,就是定义一对儿getter/setter方法。

3.必须叫setXxx或者时getXxx命名规则。

对于Getter来说,不能有参数,返回值类型和成员变量对应。

对于Setter来说,不能有返回值,参数类型和成员变量对应。

 

构造方法:

构造方法是专门用来创建对象的方法,当我们通过关键字new来创建对象时,就是在调用构造方法。

格式:

public 类名称(参数类型 参数名称){

       方法体

}

注意事项:

1.构造方法的名称必须和所在的类名完全一样,就连大小写也要一样。

2.构造方法不要写返回值类型,连void都不写。

3.构造方法不能return一个具体的返回值

4.如果没有编写任何构造方法,那么编译器将会默认赠送一个没有参数的构造方法,其方法体什么事情都不做。

5.一旦编写了至少一个构造方法,那么编译器将不再赠送。

6.构造方法也是可以进行重载的。

重载:方法名称相同,参数列表不同。

 

一个标准的类通常要拥有下面四部分组成部分:

这样标准的类也叫做Java Bean

1.所有的成员变量都要使用private关键字修饰

2.为每一个成员变量编写一对getter/setter方法

3.编写一个无参数的构造方法

4.编写一个全参数的构造方法

//快速生成get/set:    alt+insert    【getter/setter】

//快速生成构造方法:   alt+insert    【Constructor】

//如果不是快速生成就是【code】-【generate】//ideaij快捷键。都是

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值