java笔记整理——持续更新

1.默认情况下,小数都被看做double型,若使用float型小数,需要在其后加f或F表示,对于double类型需要加d或D表明是一个double类型数据。不加d不会出错,但是如果申明float时不加f会被认为是double类型而出错。例如:
float a = 1.23f; √
float a = 1.23; × error:Type mismatch: cannot convert from double to float
double b = 1.23;√
double b = 1.23;√

2.java中允许使用其他类型字符作为变量名,例如:int 中文 = 3;但是尽量不要这么使用。

3.final可以修饰:属性,方法,类,局部变量,表示不可修改;final修饰的方法表示该方法在子类中不能被 重写,final修饰的类表示该类不能被继承。
static可以修饰:属性,方法,代码段,内部类(静态内部类或嵌套内部类)。强调它们只有一个
static final和final static没什么区别,一般static写在前面。static修饰的属性强调它们只有一个,final修饰的属性表明是一个常数(创建后不能被修改)。static final修饰的属性表示一旦给值,就不可修改,并且可以通过类名访问。static final也可以修饰方法,表示该方法不能重写,可以在不new对象的情况下调用

4.当局部变量与类成员变量名字相同时,成员变量被隐藏,这个成员变量在此方法中暂时失效。

5.&和&&都表示逻辑与运算,区别在于:使用&会判断两个表达式,而是用&&时,当左边表达式为false则直接输出false,这被称为“短路”,可以节省判断开销。

6.java语言也可以把char字符作为整数处理,范围:0~65535。

7.多行注释中可以嵌套单行注释,但不能嵌套多行注释。

8.字符串常用基本操作函数:
a.获取长度:length()
b.查找字符索引:indexOf(String s) lastIndexOf(String s) charAt(int index)
c.劫取子串:substring(int beginIndex) substring(int beginIndex,int endIndex)
d.去除空格:trim()
e.字符串替换:replace(char oldChar,char newChar) 注:oldChar与newChar必须大小写一致
f.判断是否按指定开头或结尾:startWith(String prefix) endWith(String suffix)
g.字符串比较:equals(String otherString) equalsIngnoreCase(String otherString)注意:不能简单使用==判断相等,它判断的是地址
h.按字典顺序比较字符串:copareTo(String otherString) 位于之前返回-1,之后返回1,只有str1.equals(str2)返回true时,才返回0。
i.字母大小写转换:toUperCase() toLowerCase()
j.字符串分割:
split(String sign) sign为分割字符串,也可用正则式,若要使用多个分割符,可以使用“|”,例如,“,|=”。
split(String sign,int limit) 根据给定分割符分割,并限定次数
k.格式化字符串:
format(String format, Object… args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。
format(Locale locale, String format, Object… args) 使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。
日期和时间字符串格式化:查表
l.字符串生成器:可变字符序列

		StringBuilder builder = new StringBuilder(""):
		builder.append("hello");
		builder.insert(5,wordword);
		builder.delete(9,12);
		最后输出为:helloword

9.Java数组操作:
a.foreach遍历:for(元素类型 ele : 数组名/Iterable 实例)
b.数组元素替换(填充):fill(array,value) 和 **fill(array,int fromIndex,int toIndex,value)**注:fromIndex包括,toIndex不包括。
c.数组排序:Arrays.sort(object) 注:如果数组为String类型,则按照字典编排顺序排序。
d.复制数组:copyOf(arr,int newlength) 从头开始复制数组至指定长度给新的数组,若新数组长度超过原数组,则使用0填充。**copyOfRange(arr,int fromIndex,int toIndex)**注:fromIndex包括,toIndex不包括。
e.数组查询:二分法查找元素索引 Arrays.binarySearch(Object[], Object key) (1)找到的情况下:如果key在数组中,则返回搜索值的索引。(2)找不到情况下,返回“-1”或“-插入点”,插入点为数组排序后,搜索键应该插入的位置。(从1开始计数)Arrays.binarySearch(Object[], int fromIndex, int toIndex, Object key) 指定范围内检索某一元素。

		int ia[] = new int[]{1,8,9,4,5};
		int index1 = Arrays.binarySearch(ia, 8);
		int index11 = Arrays.binarySearch(ia, 0,2,6);
		System.out.println(index1);
		System.out.println(index11);
		Arrays.sort(ia);
		int index2 = Arrays.binarySearch(ia, 8);
		int index21 = Arrays.binarySearch(ia, 6);
		int index22 = Arrays.binarySearch(ia, 0,2,6);
		System.out.println(index2);
		System.out.println(index21);
		System.out.println(index22);
	输出为:1 -2 3 -4 -3

10.java权限修饰符 private public protected
private:该成员变量只能在本类中使用,子类以及其他包的类不可见。如果一个类的访问权限被设置为private,则隐藏其内所有数据,以免用户直接访问。
public:本类、子类、其他包均可以访问。
protected:一个类使用protected修饰符,则只有本包内该类的子类或其他类可以访问。
当声明类时不使用public、protected和private修饰符设置类的权限,则这个类默认为包存取范围,即只有一个包中类可以调用这个类的成员变量。即使类中申明public变量。

privateprotectedprivate
本类可见可见可见
同包其他类或子类不可见可见可见
其他包的类或子类不可见不可见可见

11.构造方法:只有类中没有明确定义构造方法,编译器才会默认构造一个无参的构造方法。如果类中的构造方法都不是无参的,编译器也不会创建无参的构造方法。

12.静态变量、常量和方法:
被申明为static的变量、常量和方法被称为静态成员,属于类所有,区别于个别对象,可以在本类和其他类中使用类名和 “.” 调用,通常作用是为了提供共享数据的方法。注意:静态方法中不可以使用this关键字,也不可以直接调用非静态方法。Java中规定不能将方法体内的局部变量神明为static。
技巧:如果在执行类时,希望先执行类的初始化动作,可以使用static定义一个静态区域,例如:

public class example{
	static{
		//some
	}
}

当这段代码被执行时,首先执行static中程序,且只会执行一次。
类中的主方法,即public static void main(String[] args)是静态的,因此若要直接在该函数中调用其他函数,那个函数也必须是静态的。

13.对象的比较

public class Compare {
	public static void main(String[] args){
		String c1 = new String("abc");
		String c2 = new String("abc");
		String c3 = c1;
//		==
		System.out.println(c1==c2);
		System.out.println(c1==c3);
		System.out.println(c2==c3);
//		equals
		System.out.println(c1.equals(c2));
		System.out.println(c1.equals(c3));
		System.out.println(c2.equals(c3));
	}
}
输出:false true false true true true

14.Java 垃圾回收与finalize() :

15.Java中不能定义基本类型对象,为了能将基本类型市委对象进行处理,并能连接相关方法,Java为每个基本类型都提供了包装类,如int型数值的包装类Integer,boolean型数值的包装类Boolean,这样便可以把这些基本类型转换为对象处理。
15.1.Integer类有两个构造方法,分别接收int型变量和String型变量,如:Integer number = new Integer(1);
Integer number = new Integer(“1”);

Integer number1 = new Integer(1);
Integer number2 = new Integer("1");
System.out.println(number1==number2);
System.out.println(number1.compareTo(number2));
System.out.println(number1.equals(number2));
输出:false 0 true

Integer类提供的四个常量:MAX_VALUE MIN_VALUE SIZE TYPE

15.2.Boolean类提供两个构造方法:Boollean b = new(true); Boolean b = new(“yes”);以String作为参数时,如果String不为null,且在忽略大小写时为“true”,则返回一个true值的Boolean对象,否则返回false。

Boolean b1 = new Boolean("yes");
Boolean b2 = new Boolean("true");
Boolean b3 = new Boolean("tRue");
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
输出:false true true

Boolean 类提供三个常量:TRUE FALSE TYPE。

15.3.Byte类提供两种构造方法的重载形式来创建Byte类对象:

byte mybyte = 20;
Byte b = new Byte(mybyte);

Byte b1 = new Byte("20");

Byte类提供四个常量:MIN_VALUE MAX_VALUE SIZE TYPE

15.4Character 只有一个构造方法:Character char = new Character(“s”)
提供了大量常量字符。

15.5Double和Float 是对double、float基本类型的封装,他们都是Number类的子类,又是对小数的操作,使 用方法相同。以Double为例,构造方法有两种:Double(double value)和Double(String str)。
提供以下常量:MAX_EXPONENT MIN_EXPONENT NEGATIVE_INFINITY POSITIVE_INFINITY。

15.6 Number类是抽象类,是BigDecimal BigInteger Byte Double Float Integer Long 和Short类的父类,Number类的子类必须提供将表示的数值转换为byte double float int long 和short 的方法。例如:doubleValue()方法返回双精度值。

16.内部类
16.1 内部类中可以直接存取其所在类的私有成员变量。

16.2 内部类的对象实例化操作必须在外部类或外部类的非静态方法中实现,即有两种实例化操作:

public static void main(String args[]){
	OuterClass out = new OuterClass();
	OuterClass.innerClass in = out.doit();//doit方法返回内部类引用
	OuterClass.innerClass in2 = out.new innerClass();//使用外部类对象创建其内部类对象
}

总结:内部类对象依赖外部类对象,除非已经存在一个外部类对象,否则类中不会出现内部类对象。

16.3 内部类向上转型为接口
一般类中不能多次实现接口中同一个方法,但是如果在实现该接口的内部类中实现该接口的方法,就可以定义多个内部类以不同的方式实现接口中的同一个方法。

16.4 非内部类不饿能被声明为private或protected访问类型,即外部类只能用public或默认(default)两种修饰符。

16.5局部内部类
内部类不仅可以在类中定义,也可以在类的局部位置定义,例如类的方法或任意作用域中。在方法中定义内部类时,方法的外部不能访问该内部类,但是内部类可以访问当前代码块的常量以及此外部类的所有成员。
注意: 在方法中定义的内部类只能访问方法中定义为final类型的变量,因为内部类对象的生命周期会超过局部变量的生命周期。
局部变量的生命期: 当该方法被调用时,该方法中的局部变量在栈中被创建,当方法调用结束时,退栈,这些局部变量全部死亡。
内部类对象生命期: 与其它类一样,当创建一个局部内部类对象后,只有当没有其它人再引用它时,它才能死亡。
定义为final后,编译程序方法:
将所有的局部内部类对象要访问的final型局部变量,都拷贝成为该内部类对象中的一个数据成员。这样,即使栈中局部变量(含final)已死亡,但由于它是final,其值永不变,因而局部内部类对象在变量死亡后,依旧可以访问final型局部变量。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值