Java基础知识补充

计算机基础知识

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

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相关。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值