java整理(未完善)

1. java语言的特点

  1. 面对对象(oop三原则)
  2. 简单性
  3. 跨平台
  4. 安全性
  5. 健壮的

2.面向对象

简单来说,面向对象是一种程序设计基础。他把重点放在了数据(即对象)和对象的接口上。

3.java为什么是健壮的

java投入的大量的经历进行早期的问题检测、运行时的检测,并消除了容易出错的情况

  1. java编译器可以检测出许多在其他语言中仅在运行时才能检测到的问题
  2. 采用了指针模型可以消除重写内存和数据损坏的可能性

4. 面对对象与面向过程

  1. 面对对象:
    优点:易维护、易拓展、易复用
    缺点:性能比面向过程低

5.java的基础设计结构

  1. 基本数据类型
  2. 注释
  3. 输入输出
  4. 控制流
  5. 变量
  6. 运算符
  7. 数组
  8. 字符串

6.数据结构

  1. 基本数据结构
类型字节取值范围默认值包装类
byte1-128~1270Byte
short2-32768~327670Short
int4-2147483648~21474836470Integer
long8-2的8*8-1次方~2的62次方-10Long
float(单精度)41.4E-45~3.4028235E380.0Float
double8-4.9E-324~1.7976931348623157E3080 .0Double
char20~65535u0000Character
boolean1true或falsefalseBoolean
  1. 引入类型
    类、接口类型、数组类型、枚举类型、注解类型。

7.strictfp关键字(了解)

对于使用 strictfjp 关键字标记的方法必须使用严格的浮点计算来生成可再生的结果。
如果将一个类标记为strictfp, 这个类中的所有方法都要使用严格的浮点计算。

8.自增和自减

  1. ++a和a++的区别?

9.逻辑运算符

逻辑运算符逻辑功能
&(与)两边同时满足(找假)
|(或)一边为真则为真(找真)
!(非)取反
^(异或)相同为false,不同为true
&(逻辑与)有false则false,若&&左边表达式或者值为false则右边不进行计算
|(逻辑或)有true则true,若

&和&&的区别:&比较笨,它需要两边都看一遍,在返回。短路是如果一边满足条件就不会在去看第二个

10.eqlues和==的区别

==引用类型比较的是地址值,基本类型比较的是值本身
没有重写(Object)的eqlues就是==,重写后比较的就是属性值

11.不可变字符串

String都是被final修饰的,定义的都是常量。
如果修改String的内容,都会重新在创建出来一个对象
//包装类也是不变类

12.char数组打印不为什么不是地址值

  • char类型的数组就当于一个字符串
  • 因为输出流System.out是PrintStream对象,PrintStream有多个重载的println方法,其中一个就是public void println(char[] x),直接打印字符数组的话,不像int[]等其他数组,它会直接调用这个方法来打印,因而可以打印出数组内容,而不是地址。

13.ArrayList为什么直接打印的不是地址值

ArrayList重写了toString方法,打印这个对象时print调用这个对象的toString方法
Syetem.out.println() 打印谁就是调用那个对象的toString方法

14.数组的初始值

  • 基本类型初始值 整形数就是0 浮点数是0.0 boolean是false char是u0000

  • 引用类型的默认值都是null Object也是引用类型

15.为什么成员变量有默认值

  • 那得多亏了构造函数,想要new对象必须至少拥有一个构造函数,拿默认的无参构造函数来讲,虽然表面上看着它什么也没做,其实底层不单只是为对象分配内存,它也同时初始化对象上的成员变量
  • 每次创建对象时构造器都会初始化成员变量
public class myConstruction{
public static void main(String[] args) {
System.out.println(new a().i); //10
System.out.println(new a(666).i);//0
}
}
class a{
    int i ;
   public a(){
       i=10;
   }
   public a(int a ){
   }

16.throw和thorws的区别

17.构造代码块可以里的数据可以被static修饰吗,为什么?

不可以

18.代理模式

代理模式

19.方法里可以定义静态变量吗?

不可以
Java中静态变量只能在类主体中定义,不能在方法中定义。 静态变量属于类所有而不属于方法

public class Test {
	static int i = 0;
	public int am() {
		static int a = 0;//Illegal modifier for parameter a; only final is permitted
		a++;
		return a;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Test test = new Test();
		test.am();
		int j = test.am();
		System.out.println(j);//编译错误
	}

}

20.值传递和引用传递

  • 值传递,传递的是原来值的副本
  • 引用传递,除了一些特殊的(String,包装类属于不可变类),一般的引用类型在进行传递的时候,一开始形参和实参都是指向同一个地址的这个时候形参对对象的改变会影响到所引用的对象上

21. finalize

finalize设计的目的是保证对象在被垃圾收集前完成特定资源的回收

22.jvm内存结构

JVM内存结构

23.BIO、NIO、AIO

  • BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。
  • NIO:New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。
  • AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。

24.StringBuilder/StringBuffer/String

StringBuffer、StringBuilder和String一样,也用来代表字符串。
String类是不可变类任何对String的改变都 会引发新的String对象的生成
StringBuffer、StringBuilder是可变类,任何对它所指代的字符串的改变都不会产生新的对象
StringBuffer 线程安全 多线程操作
StringBuilde 线程不安全 单线程操作

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值