一、修饰符
修饰符 类 属性 方法 局部变量
final 可以(不能被继承) 可以(不能被继承) 可以(表示不能被覆盖) 可以(常量)
static 可以(类变量) 可以(静态方法)
abstract 可以(抽象类) 可以(抽象方法)
pulbic 可以 可以 可以
protected 可以 可以
default 可以 可以 可以
private 可以 可以
二、==与equals
基本类型进行值比较时用 ==
对象类型进行值比较时用 equals
写equals方法时:
1、自反性判断 if(this==obj) return true;
2、判断是否为null if(obj==null) return false;
3、判断类型是否兼容 if(!(obj instanceof 类)) return false; 或 if(this.getClass()!=obj.getClass()) return false;
4、强制类型转换,判断每一个属性:简单类型用==,对象类型用.equals
toString()方法: 返回一个字符串
直接输出一个对象时,会自动调用对象的toString()方法,输出toString()的返回值
当没有覆盖toString()方法时,会输出 :对象名@十六进制的地址值
三、main方法的参数
在命令模式下:java MainMethodTest abc def 100
abc是args[0],def是args[2],100是args[3] 都以字符串类型接收
在eclipse下:run ... 先选择主类
四、String类详细介绍
int a=5;
int b=a<<33; 因为33%32=1; 所以左移1位。
所以b=10;
int a=3,b=4,c=5,d=0;
if(a>b)
if(c>d)
d=10;
else
d=20;
结果d=0;
1、String是一个不变模式:不变模式:一个对象一旦产生就不可能再修改(string就是典型的不变模式);通过不变模式可以做到对象共享;
2、如果用Stirng str = “abc”来创建一个对象时,则系统会先在串池中寻找有没有“abc”这个字符串。
如果有则直接将对象指向串池中对应的地址,如果没有则在串池中创建一个“abc”字符串。
所以:String str1 = “abc”;
String str2 = “abc”;
Str1 = = str2 返回值是ture;他们的地址是一样的。
也就是说str1和str2都指向了代码空间中相同的一个地址,而这个地址空间保存就是是字符串”abc”;
如果用String str = new String(“abc”)则直接在堆空间开辟一块存储空间用来存放”abc”这个字符串。
所以:String str1 = new String(“abc”);
String str2 = new String(“abc”);
Str1 = = str2 返回值是false;他们的地址是不一样的。
也就是说str1和str2分别指向了堆空间中不同的两个地址,而这两个地址空间保存的都是字符串”abc”;
3、java.lang下的StringBuffer类。
对于字符串连接
String str=”1”+”2”+”3”+”4”;
产生:
12
123
1234
会在串池中产生多余对象,而真正我们需要的只有最后一个对象,用这种方式进行字符串连接时,不管在时间上还是在空间上都会造成相当大的浪费。
所以我们应该使用 StringBuffer(线程安全的) 或者 StringBuilder(线程不安全的)
解决方案:
String s;
StringBuffer sb = new StringBuffer(“1”);
Sb.append(“2”);
Sb.append(“3”);
Sb.append(“4”);
S = sb.toString();
解决后的方案比解决前在运行的时间上相差2个数量级。
五、包装类
基本类型的包装类,为了提高效率
JAVA为每一个简单数据类型提供了一个封装类,使每个简单数据类型可以被Object来装载。
除了int(Integer)和char(Character),其余类型首字母大写即成封装类类型名。
转换字符的方式:
int I=10;
String s=I+” ”;
String s1=String.valueOf(i);
Int I=10;
Interger I_class=new integer(I);
封装类.字符串.基本类型
三种类型六种转换
new Integer() 或Integer.valueOf()
int--------------------------------------->Integer
i.intValue()
Integer----------------------------------->int
Integer.toString(...) 或 String s=100+" "
int--------------------------------------------------->String
Integer.parseInt("...")
String---------------------------------->int
i.toString()
Integer-------------------------------->String
Integer.valueOf("...") 或new Integer("...")
String------------------------------------------------>Integer
需要了解的方法:
Integer类中:
int intValue()
static int parseInt(String s) 默认为十进制
static int parseInt(String s,int radix) 第二个参数是进制(2--36)
String toString()
static String toString(int i)
static String toString(int i,int radix)
static Integer valueOf(int i)
static Integer valueOf(String s)
static Integer valueOf(String s,int radix)