Java_一些小知识点
来源:互联网 发布:淘宝女装装修模板 编辑:程序博客网 时间:2024/05/22 06:06
变量什么情况下会自动被赋一个初始值
基本类型(不包括基本类型数组)的成员变量在定义的时候如果没有初始化,那么编译器会自动初始化给他赋一个初始值。局部变量则不会。
(int[] i = new int[5]; 这样的式子不管是成员变量还是局部变量,都会有默认的值。其实它和上面说的不一样,它已经初始化了,所以会有默认值,上面说的是没有初始化的情况下。)
(另外,final类型的成员变量必须初始化,不然编译器会报错)
缺省的构造方法
如果一个类中没有构造方法,编译器会自动给这个类添加一个无参的缺省构造方法。
如果一个类中已经有了构造方法,不管是无参的还是有参的,编译器都不会再创建缺省构造方法了。
看下面的例子:
class Dog {
private String name;
Dog(String name) {}
}如果这样写new Dog();那么编译器会报错。
值传递和引用传递
当一个变量作为一个参数传入方法内部的时候,会有两种不同的传递方式:值传递和引用传递。
值传递的特点:不管方法内部对传进去的参数作任何改变,也不会影响方法外部的变量的值。
引用传递的特点:方法内部对传进去的参数作的改变也会影响方法外部的变量的值。
那么哪些是值传递,哪些是引用传递呢?
- 基本类型(8种)的传递都是值传递。
- 引用类型(除String外)都是引用传递。
- Strng比较特殊,它虽然是引用类型,但是却是值传递。
基本类型的取值范围
在讲解基本类型的取值范围之前,先讲讲二进制怎么转换为十进制(算取值范围的时候会用到)。
首先二进制有带符号的二进制和不带符号的二进制。
比如:1111
如果它是不带符号的二进制,那么它的十进制值 = 2^3 + 2^2 + 2^1 + 2^0 = 2^4 - 1 = 15
如果它是带符号的二进制,那么最高位(千位)就是符号位,1代表负数,0代表正数。那么负的二进制怎么换算为十进制呢?首先要把除符号位的所有位按位取反再加1(算出来是1001),然后在算它的十进制值 = -2^0 = -1
Java中基本类型的取值范围
基本类型字节数位数最大值最小值byte1byte8bit2^7 - 1-2^7short2byte16bit2^15 - 1-2^15int4byte32bit2^31 - 1-2^31long8byte64bit2^63 - 1-2^63float4byte32bit3.4028235E381.4E - 45double8byte64bit1.7976931348623157E3084.9E - 324char2byte16bit2^16 - 10其实,这些取值范围不需要死记,可以通过位数计算出来,下面举两个例子(byte和char)说明一下
byte的情况:
byte占8位,而且有正有负。最大值当然就是01111111 = 2^7 - 1。因为负的二进制有个按位取反再加1的操作,所以最小值是10000000,按位取反后为11111111,再加1后为110000000 = -2^7
char的情况:
char占16位,而且没有负值。所以最小值是0。最大值是1111111111111111 = 2^16 - 1
Java中的权限访问修饰符
Java中有四种权限访问修饰符:private、(default)、protected、public,它们的访问权限如下:
包外子类包内本类publicYESYESYESYESprotectedNOYESYESYES(default)NONOYESYESprivateNONONOYES继承时需要复写父类的方法的时候,权限反问修饰符可以往范围大的变,不可以往范围小的变。
接口和抽象类的比较
接口抽象类功能实现多继承作为直接父类被继承成员变量必须是public static final的常量
(如果不加修饰符,默认是public static final的)没有要求,和普通类一样方法所有方法都必须是public abstract的
(如果不加修饰符,默认是public abstract)抽象方法和非抽象方法都可以有
一个抽象类并不一定必须存在非抽象方法
抽象方法的访问权限没有要求,和普通类一样
(但是abstract关键字和接口不同必须要加)抽象方法的实现如果是接口继承接口,或者是抽象类实现接口,都不需要实现抽象方法和接口一样能不能实例化不能不能
- Java_一些小知识点
- JAVA_各个小细节知识点
- 一些小知识点
- 一些小知识点
- java一些小 知识点
- 一些小知识点
- JavaScript一些小知识点
- javascript 一些小知识点
- 一些小知识点
- 一些小知识点
- 一些小知识点(4)
- 一些小知识点
- python一些小知识点
- 一些小知识点2
- 一些小知识点
- 一些小知识点
- iOS一些小知识点
- 一些小知识点
- 一个基于GDIplus的Gif显示控件
- spring 事务管理
- C++ 编程题
- android开发环境搭建最终版(经过验证)
- Java就业培训教程重点部分的笔记
- Java_一些小知识点
- Firefox火狐浏览器强制开启硬件加速方法
- DNS原理和解析过程
- Unity3d-OnRenderImage
- LFS on ubuntu12.04
- Linux 结合 netstat和awk命令来统计网络连接数
- cocos2d-x与ISO内存管理
- 归并排序
- Aop实现接口方式