欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java基础知识补充

程序员文章站 2022-05-10 11:49:47
...

计算机基础知识

1.计算机采用二进制表示,只包含0、1两个数,逢二进一,每一个0或1,叫做一个bit(比特,位)

Java基础知识补充Java基础知识补充

2.字节——计算机中最小的存储字节

 

位(bit):一个数字0或者一个数字1,代表一位。

字节(Byte):每逢8位是一个字节,数据存储的最小单位。

1Byte=8 bit

1 KB=1024 Byte

1 MB=1024 KB

1 GB=1024 MB

1 TB=1024 PB

3.命令提示符——cmd

启动:             win+R

切换盘符:         盘符名称:

进入文件夹:       cd 文件夹名称

进入多级文件夹:   cd 文件夹1\文件夹2\文件夹3

返回上一级:       cd ..

直接回根路径:     cd \

查看当前文件夹:   dir

清屏:             cls

退出:             exit

 

Java基础知识

1.javac.exe:编译器

   java.exe: 解释器

→编译器的两点优化:

①对于byte/short/char三种类型来说,如果右侧赋值的数值没有超过范围,那么javac编译器将会自动隐含地为我们补上一个(byte)(short)(char)。

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

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

②在给变量进行赋值的时候,如果右侧的表达式当中全都是常量,没有任何变量,那么编译器javac将会直接将若干个常量表达式计算得到结果,“编译器的常量优化”,一旦表达式当中有变量参与,那么就不能进行这种优化了。

2.注释: ① //单行注释

               ②/* 多行注释 */

3.关键字特点:①完全小写的字母

                         ②在增强版的记事本中有特殊颜色

4.标识符:指在程序中,我们自己定义的内容,如类的名字、方法的名字和变量的名字等等,都是标识符。

①命名规则(硬性要求):

→标识符可以包括英文字母26个(区分大小写)、0-9数字、$(美元符号)和_(下划线)

→标识符不能以数字开头

→标识符不能是关键字

②命名规范(软性建议):

→类名规范:首字母大写,后面每个单词首字母大写(大驼峰式

→变量名规范:首字母小写,后面每个单词首字母大写(小驼峰式)

→方法名规范:同变量名

//第一行的第三个单词必须和所在的文件名称完全一样,大小写也要一样
//public class后面代表定义一个类的名称,类是Java当中所有源代码的基本组织单位
public class HelloWorld  {
   //第二行的内容是万年不变的固定写法,代表main方法
   //这一行代表程序执行的起点
   public static void main(String[] args)  {
        //第三行代表打印输出的语句(其实就是屏幕显示)
        //希望显示什么东西,就在小括号当中填写什么内容
   System.out.println(“Hello,World!!”);
   }
}

5.常量:在程序运行期间,固定不变的量

→常量的分类:

字符串常量:凡是用双引号引出来的部分,叫做字符串常量。例:“abc”(双引号内可以有多个或者0个)

整数常量:直接写上的数字,没有小数点。例:100、200

浮点数常量:直接写上的数字,有小数点。例:2.5、-3.14、0.0

字符常量:凡是用单引号引出来的部分,叫做字符串常量。例: ’A’(单引号内必须有且只能有一个,不能没有

布尔常量:只有两种取值,true和false

空常量:null,代表没有任何数据。不能直接打印空常量,即System.out.println(null)是不对的

6.数据类型——基本数据类型+引用数据类型

①基本数据类型:

整数型  byte(1)  short(2)  int(4) long(8)

浮点型  float(4)  double(8,默认)

字符型  char(2)

布尔型  boolean(1)

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

注意事项:

①字符串不是基本类型,是引用类型

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

③数据范围与字节数不一定相关,例如float数据范围比long更加广泛,但是float是4字节,long是八字节

④浮点数当中默认类型是double,如果一定要使用float类型,需要加上一个后缀F

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

例:long num6 = 3000000000L

    float num7 = 2.5F

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

=右侧数值的范围不能超过左侧数据类型的取值范围,否则会出错

注意事项:

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

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

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

④没有进行赋值的变量,不能直接使用,一定要赋值之后,才能使用

⑤变量使用不能超过作用域的范围

【作用域】:从定义变量的一行开始,一直到直接所属的大括号结束为止

  1. 数据类型转换
double num1 = 2.5F
//左边是double类型,右边是默认的float类型,左右不一样,发生自动类型转换

①自动类型转换(隐式)

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

规则:数据范围从小到大

②强制类型转换(显式)

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

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

→注意事项:

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

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

③byte/short/char这三种类型在运算的时候,都会被首先提升为int类型,然后再计算

byte + byte --> int + int --> int

byte + short --> int + int --> int

short result = ( short ) ( num1 + num2 );  
//int强制转换为short,注意必须保证逻辑上真实大小本来就没用超过short范围,否则会发生数据溢出

④boolean类型不能发生数据类型转换

9.ASCII码表:美国信息交换标准代码

48 --> 0   65 --> A   97 --> a

Unicode码表:万国码,也是数字和符号的对应关系,开头0-127部分和ASCII完全一样,但是从128开始包含有更多字符。

10.运算符

①对于一个整数的表达式来说,除法用的是整除,结果仍然是整数,只看商,不看余数。

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

③一旦运算当中有不同类型的数据,先变为一样的数据类型然后进行计算,结果将会是数据类型范围大的那种。

④在单独使用时,前++和后++没有任何区别。

→四则运算当中的“+”有常见的三种用法:

①对于数值来说,那就是加法。

②对于字符char类型来说,在计算之前,char会被提升为int,然后再计算。

③对于字符串String(首字母大写,并不是关键字)来说,加号代表字符串连接操作。

 

System.out.println(“Hello”+“World”);      //HelloWorld(中间无空格)

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

String + int --> String

String + int + int --> String

→逻辑运算符

①与“&&”,或“||”,具有短路效果:如果根据左边已经可以判断得到最终的结果

(&& --> false,|| --> true),那么右边的代码将不再执行,从而节省一定的性能。

②与、或运算符,如果有多个条件,可以连着写

11.三元运算符

数据类型 变量名称 = 条件判断?表达式A:表达式B;

→注意事项:

①必须同时保证表达式A和表达式B都符合左侧数据类型的要求。

②三元运算符的结果必须被使用。

 

​​​​​​​方法入门

1.定义一个方法的格式:

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

定义方法的完整格式:

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

      方法体

      return 返回值;

}

修饰符:现阶段的固定写法,public static

返回值类型:也即是方法最终产生的数据结果是什么类型

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

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

return:两个作用,第一停止当前的方法,第二将后面的结果数据返回值还给调用处,返回值必须和方法名称前面的“返回值类型”保持对应

 

→注意事项:

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

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

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

④如果方法有返回值,那么必须写上“return 返回值;”,不能没有。

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

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

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

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

2.调用方法的格式:

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

②打印调用:  System.out.println( 方法名称 (参数) );

③赋值调用: 数据类型 变量名称 = 方法名称 ( 参数 );

3.有无参数的区别:
①有参数:小括号当中有内容,当一个方法需要一些数据条件,才能完成任务的时候,就是有参数。

②无参数:小括号当中留空,一个方法不需要任何数据条件,自己就能独立完成任务,就是无参数。

4.有无返回值的区别:

①有返回值:将返回值还给调用处,可以使用单独调用、打印调用或者赋值调用

②无返回值:直接结束,只能使用单独调用,不能能使用打印调用或者赋值调用

5.方法重载

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

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

→方法重载与下列因素有关:
①参数个数不同

②参数类型不同

③参数的多类型顺序不同

→方法重载与下列因素无关:
①与参数的名称无关

②与方法的返回值无关

 

 

​​​​​​​数组

1.数组的初始化:
①动态初始化:指定长度

 

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

解析含义:

左侧数据类型,也就是数组当中保存的数据,全都是统一的什么类型

左侧的中括号,代表我是一个数组

右侧的new:代表创建数组的动作

②静态初始化:指定内容

标准格式:

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

省略格式:

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

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

②静态、动态初始化标准格式可以拆分成两个步骤。

③静态初始化一旦使用省略格式,就不能拆分成两个步骤了。

 

使用建议:
如果不确定数组当中的具体内容,用动态初始化;否则,已经确定了具体内容,用静态初始化

2.访问数组元素

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

②访问数组元素的格式: 数组名称 [索引值]

  索引值:就是一个int数字,代表数组当中元素的编号。从0开始到“数组长度-1”

3.使用动态数组的时候,其中的元素将会自动拥有一个默认值。

整数类型 --> 0           浮点类型 -->0.0

字符类型 -->’\u0000’     布尔类型 -->false

引用类型 -->null

 

​​​​​​​内存划分

1.Java的内存需要划分成5个部分:

栈(Stack):存放的都是方法中的局部变量

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

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

堆(Heap):凡是new出来的东西,都在堆中

     堆内存里面的东西都有一个地址值:16进制

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

整数类型 --> 0           浮点类型 -->0.0

字符类型 -->’\u0000’     布尔类型 -->false

引用类型 -->null

方法区(Method Area):存储.class相关信息,包含方法的信息。

本地方法栈(Native Method Stack):与操作系统相关。

寄存器(pc Register):与CPU相关。

相关标签: java