java基本知识

1.编译与运行

javac.exe——编译工具,编译java文件,生成.class字节码文件

java.exe——运行工具,在类中,找到入口方法执行

 .java文件编译时不区分大小写

.class文件运行时区分大小写,因为是.java文件中的类名。

class不用public时,可以不用文件名与类名一致。

反之,则必需一致,推荐保持一致方便后续管理

2.final关键字

最终变量

final int MAX=100;
//声明常量
//==const MAX=100

3.不同进制表示

十进制: 10
二进制:0B10 ||  0b10

八进制:010   //最独特的直接以0为始
     
十六进制:0x10 ||  0X10

4.一字节表示十进制范围

一字节表示的是存储在计算机里的8bit(位)数据,字节是最基本的单位,bit(位)是最小的单位。针对基本单位一字节在计算机里存储的是以反码的形式,且最高位是符号位,不会参与到换算里或被取反,只表示数据的正负。

0不是正数。

正数三码相同(原码,反码,补码),所以8bit正数最大的就是(0111 1111)= 127

最小正数就是(0000 0001)=1

(0000 0000)=0

负数,以补码形式存储,所以先取两个边界——(1000 0001)、(1111 1111)

(1000 0001)补码 = (1000 0000)反码 = (1111 1111)原码 = (-127)十进制

(1111 1111)补码 = (1111 1110)反码 = (1000 0001)原码 = (-1)十进制

最后特殊情况之(1000 000)补码(本来应表示-0,可是已经有表示0的字节了,无意义,所以另外表示一个数字):

计算情况=(1000 0001)补码-(0000 0001)补码=(1000 0000)补码

                         -127               -             1                 =        -128

所以一字节表示十进制范围(-128~127)

5.java基本数据类型存储 

  • 为什么float(4个字节)比long(8个字节)的存储范围大?
  • 为什么float和double不精确?
  • 为什么double(8个字节)比float(4个字节)精度范围大?
  • 以上问题涉及到小数在计算机中存储问题。

6.编码表 

编码表就是用数字来代表字符,ASCII编码表就是有1个字节(0~255)表示256个字符。

unicode编码表俗称万国表,以两个字节(0~65535),表示全球范围内的字符。

Java使用Unicode字符集来表示每一个字符,即每一个字符对应一个唯一的Unicode编码值。char类型的数值参与算术运算或比较大小时,都是用编码值进行计算的。

7.转义字符 

某些特殊字符需要使用转义的方式表示

可运用场景:System.out.println("edison\tcheng")

\n:换行
\r:回车
\t:Tab键
\\:\
\":"
\':'
\b:删除键Backspace

 8.m++与++m的区别 

int m=1;
m=m++;
System.out.println(m);

你能说出上式的结果吗?m打印出来是多少呢?                 

结果为1。

m=++m

1.先对变量进行自增

2.再将m值放入到操作数栈中

3.取出操作数栈中的值赋值给m.

m=m++

1.先将m值放入到操作数栈中

2.再对变量进行自增

3.取出操作数栈中的值赋值给m,覆盖掉前面自增的m值

9.位运算符

注意位运算符针对的都是补码,负数位移后需要转换为原码才能得到正确的值

<<

左移运算符,左移几位,相当于乘以2的几次方。

如果左移的位数超过变量的数据类型的总位数,需要先减去总位数,再用剩余的值进行位移。

例如:3>>34    3是int型,占4字节,32位。    其等价于3>>(34-32)即3>>2 = 12.

 >>

右移运算符,右移几位,相当于除以2的几次方。

如果右移的位数超过变量的数据类型的总位数,需要先减去总位数,再用剩余的值进行位移。

负数进行右移运算时,高位补1。

Tips

注意byte、short数据类型在进行运算时会自动提升到int。

例如:byte b=3     b<<7  结果:384 

>>> 

无符号右移,无论负数还是正数,高位都补0。

10.运算符优先级

11.重载与重写 

重载:

  • 方法重载:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。

重写:

1.必须保证父子类之间重写方法的名称相同。

2.必须保证父子类之间重写方法的参数列表也完全相同。

2.子类方法的返回值类型必须【小于等于】父类方法的返回值类型(小于其实就是是它的子类,例如:Student < Person)。

注意:如果返回值类型是基本数据类型和void,那么必须是相同

3.子类方法的权限必须【大于等于】父类方法的权限修饰符。

注意:public > protected > 缺省 > private

父类私有方法不能重写

跨包的父类缺省的方法也不能重写

12.修饰符可使用位置 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值