java笔记

本文涵盖Java编程的基础知识,包括十进制转二进制、整型常量赋值、循环使用、Integer与int的区别、冯诺依曼体系结构等。深入探讨了Java的高级特性,如this关键字、构造方法、静态代码块、多态性、异常处理、字符串操作、集合迭代、泛型应用及文件I/O操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、十进制转换二进制
二进制1100 十进制12
在这里插入图片描述
2、生成文档: javadoc HelloWorld.java -d 目标路径
3、在当下文件路径输入cmd,可以直接定位到
4、可以将整型常量直接赋值给byte,short,char等类型变量,而不需要进制转换,只要不超出其范围。在这里插入图片描述
5、制表符:空格\t,换行\n
6、对循环的次数不是很确定,使用while循环
7、int与Integer的基本使用对比
(1)Integer是int的包装类;int是基本数据类型; (2)Integer变量必须实例化后才能使用;int变量不需要; (3)Integer实际是对象的引用,指向此new的Integer对象;int是直接存储数据值 ; (4)Integer的默认值是null;int的默认值是0。
8、冯诺依曼体系:计算机应该由计算器,运算器,存储设备,输入输出设备组成
9、成员变量,直接归类管理,类的直系,在类中,方法外
10、
(1)、成员变量:在类中方法外,在堆内存,随着对象的创建,有默认值
(2)、局部变量:定义在方法中或者方法的声名中,栈内存,随着方法的应用调用,无默认值,必须初始化
11、引用数据类型:数组,类、接口、枚举
12、private关键字可以看作是封装
13、被private修饰只能用在本类中使用
14、公有方法可以调用私有方法
15、类存放在方法区
16、this关键字表示本类对象
17、构造方法之间的相互调用可以使用其他方法已经定义好的条件
18、构造方法不是用来创建对象而是对对象进行初始化的
19、使用this()表示调用本类的构造方法,必须写在第一行(构造方法之间的相互调用)
20、只要创建对象无论调用那一个构造器,构造代码块一定会执行。创建对象时候优先于构造方法执行, 多个构造方法中相同的代码存放到构造代码块中, 节省代码量
21、静态代码

  • 给构造代码块加上static关键字就变成了静态代码块, 用于类的初始化, 在类加载的时候就执行, 并且只在类加载的时候执行一次, 一般用于加载驱动。优先执行执行一次

    public class Demo {

      //构造代码块
      {
      	System.out.println("构造代码块执行了");
      }
      //静态代码块
      static{
      	System.out.println("静态代码块执行了");
      }
      
      public void method(){
      	//局部代码块
      	{
      		System.out.println("局部代码块执行了");
      	}
      }
    

22、对象初始化顺序问题

  • 成员变量 ==> 构造代码块 ==> 构造方法

  • 成员变量和构造代码谁在上面先执行谁
    构造方法中可能会用到成员变量
    23、静态方法只有一份,可供多个对象使用,在对象创建之前就有,尽量使用类名使用静态方法,类的所有静态成员都储存在类的方法区中
    23、静态构造代码块一定优先于非静态(没有静态的构造方法)
    //静态和静态比,非静态和非静态比

  • 静态成员变量 ==> 静态代码块 ==> 成员变量 ==> 构造代码块 ==> 构造方法

  • 静态成员变量和静态代码块(构造代码块)谁写在前面谁先执行

  • 24、方法被频繁调用时(工具类),使用静态方法,省去了创建对象的时间
    25、静态只能(直接)调用静态,非静态能调用静态成员变量和方法
    26、静态中不能用this关键字
    27、静态不应该算是重写
    28、多态中如果子类重写了父类的方法,调用时使用子类的方法,但无法使用子类特有的方法(成员变量属于静态绑定,成员方法属于动态绑定),静态方法子类无法重写,只有成员方法才看子类
    29、final之后不能修改对象的引用,但可以改对象中的内容。修饰成员变量时如果没有初始值,也不会自动赋值。
    30、成员变量上面,构造代码块,构造方法
    31、静态成员变量,类初始化走两步,静态成员变量静态代码块
    32、静态绑定量指编译器绑定,动态绑定是指运行器绑定
    33、抽象类继承抽象类不需要实现抽象方法
    34、接口中的常量必须是静态,最终的,也就是常量,必须初始化,名字全大写。static ,final可以省略(建议省略)
    35、有范围的方法,java中基本包头不包尾
    36、如果参数中出现了可变参数,可变参数一定是最后一个(String name,int… arr
    37、非静态必须要用对象名调用,静态调用非静态要创建对象
    38、调用静态类的静态方法,类名加方法名
    39、私有内部类只能在外部类中使用

    public class Outer {
    //静态内部类
    public static class Inner{
    //静态内部类的非静态方法
    public void innerMethod(){

      	}
      }
    

    }

    public static void main(String[] args) {
    //创建内部类对象
    Outer.Inner inner = new Outer.Inner();
    //调用内部类的方法
    inner.innerMethod();
    }
    40、new thread(){};有大括号表示创建了一个子类对象,否则为父类对象
    41、自定义异常有两类,编译时异常继承Exception(在外必须抛出,配套),运行时异常继承继承RuntimeException
    throw new MyException();
    42、引用数据类型有,类、接口、数组、枚举’
    43、多维数据除了最后一个框,其他都是数组类型,最后一个与前面的定义类型匹配
    44、一个类的命名前有包名,类找包从上往下找,若导入包在下则认为是导入包中的类(如果使用了*,则上面方法失败,尽量不要用 *)
    45、重写eqauls方法

    public boolean equals(Object obj){
    Demo val = (Demo)obj;
    if(this.ageval.age){
    return true;
    }
    return false;
    }
    46、
    String s1 = “abc”;
    String s2 = “abc”;
    System.out.println(s1
    s2);
    true;
    String s1 = new String(“abc”);
    String s2 = new String(“abc”);
    System.out.println(s1==s2);
    false;
    47、- String s1 = “ab”;

  • String s2 = “abc”;

  • String s3 = s1 + “c”;

  • System.out.println(s3 == s2);//false

  • System.out.println(s3.equals(s2));//true
    引用型和基础型
    48、return和break的区别
    49、String中的方法length();数组中的属性length
    50、String和date重写了equals方法
    51、StringBuffer和String的区别

  • String是一个不可变的字符序列

  • StringBuffer是一个可变的字符序列

  • 52、substring不会改变原来的StringBuffer

  • 53、+号比append效率低,insert效率也低

  • 54、二. StringBuilder

  1. 定义
    StringBuilder功能等同于Stringbuffer, 线程不安全,效率高, 单线程下建议使用StringBuilder
  2. StringBuffer和StringBuilder的区别
    • StringBuffer是jdk1.0版本开始的,是线程安全的,效率低
    • StringBuilder是jdk1.5版本开始的,是线程不安全的,效率高

55、StringBuilder下由程序员控制线程分离
56、

	public static void main(String[] args) {
	
	Integer ii = 100;//自动装箱
	int i = ii;		//自动拆箱
}
57、


 Integer i7 = 197;
Integer i8 = 197;
System.out.println(i7 == i8);//false超过了127
System.out.println(i7.equals(i8));//true 	

58、迭代器自己的删除方式可控,集合的删除方法不可控
59、treeset集合中的元素需要实现Compareable接口,并且重写其中的比较方法,返回0不存储
在这里插入图片描述

60、泛型是将运行时错误提前到编译期
61、比较器和比较方法同时存在时使用比较器方法
62、如果比较的属性相同,但是其他属性不同,会出现覆盖现象
存两个相同的用list
63、treeMap集合的如何获取值,拿key去集合中进行比较,如果当前key和集合中的元素的key比较的集合是0,就认为找到了这个过犹不及,将这个键值对拿出来,返回一个value。
64、每一个Map.Entry中有一个变量为next,负责挂重复的元素,将键相同值不同的Map.Entry挂到一快
65、file.mkdirs可以同时创建多层文件夹
66、重命名是指更改文件的全路径
67、在输出流和文件建立连接的时候就清空

private void test3() throws Exception {
  FileInputStream f = new FileInputStream("d:\\宋冬野 - 平淡日子里的刺.mp3");
  FileOutputStream f2 = new FileOutputStream("d:\\平淡日子里的刺.mp3");
  int len;
  byte[] bs = new byte[f.available()];
  while((len=f.read(bs))!=-1) {
   f2.write(bs,0,len);
  }
  f.close();
  f2.close();
 }

68、转换流 本身就是一个标准的字符流

public class TestDemo {
	public static void main(String[] args) throws Exception {
		//转换流 本身就是一个标准的字符流
		InputStreamReader isr = new InputStreamReader(new FileInputStream("demo.txt"),"utf-8");
		OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("demo2.txt"),"utf-8");
	char[] chs = new char[1024];	
		int len;
		while((len=isr.read(chs))!=-1){
			System.out.println(new String(chs,0,len));
			osw.write(chs, 0, len);
		}
	isr.close();
	osw.close();
	}
}

69、一个线程对象只能有一个Start

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值