首页 > 代码库 > Java类额应用
Java类额应用
基本数据类型包装类
Integer Character
其他的都是将首字母大写;
包装类和基本类型之间的转换:
Integer int
Integer i = new Integer(int value);
int i2 = i.intValue();
基本数据类型和String转换
String -->int
static int parseInt(String s)
int i = Integer.parseInt("123");
int ->String
String 类valueOf(int val);
String str = String.valueOf(123);
装箱和拆箱:
java5开始出现自动装箱和拆箱;
自动装箱:
可以直接把一个基本数据类型的值直接赋给它所对应的包装类对象;
Integer i = 17;
自动拆箱:把包装类对象直接赋给它所对应的基本类型的一个变量
int i2 = new Integer(2);
Object是所有类的超级父类,
Object的对象可以接受一切数据;
享元模式:
Byte,Short,Integer,Long缓存了一个区间的数据;[-128,127]看源代码
Integer i1 = 123;
Integer i2 = 123;
i1 == i2;//true
new Integer(123) == new Integer(123);//false
Object类:就是描述对象的一个类
是超级父类;
可以接受一切数据,包括数组;
Object o = {1,2,3};
Object o = new int[]{1,2,3};
boolean equals(Object otherObj);
就是那当前对象和otherObj相比较;
默认情况下,比较的是 内存里的地址,此时和 == 一样;
一般要求子类根据自身情况覆写该方法,
String 类覆写 equals方法
Integer 类也覆写了 equals方法
int hashCode();//返回对象的一个十进制的hash值,每个对象的hashCode都不一样
String toString();//把对象转成String类型, 描述对象信息
默认情况下, 类的全限定名 + @ + Integer.toHexString(this.hashCode());
一般要求子类覆写该方法
平时我们打印对象,其实打印的是对象的toString方法,也就说在底层该对象会去调用toString方法
class Person{
String name;
int age;
public Person(String name,int age)
{
this.name = name;
this.age = age;
}
public String toString()
{
return this.name +", " + this.age;
}
}
public static void mian (String []args)
{
System.out.println(new Person("Will",17));
System.out.println(new Person("Lucy",16));
}
代码块:
1.普通(局部)代码块,写在方法;
2.构造代码: 类里面,方法外面, 特点: 先于构造方法的执行,每次创建对象,都会执行
3.静态代码块: static 修饰的构造代码块, 特点: 优先于主方法的执行,只执行一次, 可以用来给静态变量赋值;
4.同步代码块
单例模式:
保证项目中的一个类在运行期间有且只有一个实例对象;
//1. 把构造方法给私有化,保证外界不能创建对象
//2. 自身在内部先创建一个对象,再使用private修饰起来,
//3. 向外暴露一个全局的静态的方法用于返回内部创建的对象;
因为静态成员只能访问静态成员,那么此时必须把对象使用static修饰,
饿汉式:
class Singleton
{
private Singleton(){}
private static final Singleton instance = new Singleton();
//线程安全
public static Singleton getInstance()
{
return instance;
}
}
懒汉式:
class Singleton
{
private Singleton(){}
private static final Singleton instance = null;
//线程不安全的
public static Singleton getInstance()
{
if(instance == null)
{
instance = new Singleton()
}
return instance;
}
}
final:
表示最终的;
可以修饰 类,方法,变量;
final 修饰的类 表示太监类,不能被继承;基本数据类型包装类全是
final 修饰的方法 表示 不能被子类覆写 ;
final 修饰的变量:
常量: 常量名大写,若是多个单词组成,单词之间使用下划线隔开;
全局常量: public static final 修饰的变量
常量只能赋值一次
若是引用类型的常量,表示 引用对象的地址不能变,但是对象的内容是可以改变的;
方法里的内部类,只能访问方法里使用 final 修饰的变量;
抽象类:
使用 abstract 修饰的类, 一般抽象类都应该包含抽象方法,但不是必须的;
若一个类有抽象方法,那么该类必须是抽象类;
不能创建对象(不能 new),其他的换个普通类一样
可以包含普通方法;
什么时候使用抽象方法:
父类定了子类应该具备的行为,但是 具体行为的实现必须得有子类来完成;
抽象方法:
使用 abstract 修饰的方法,
只有方法的申明,没有方法的具体实现;(交给子类去实现)
一般建议把 abstract 放在修饰符前面;
抽象类必须有子类,
而且子类必须全部覆写抽象类中的抽象方法,二者,子类也作为抽象类;
青年(Person)都有吃饭(eat)和坐(set)的行为;
但是文艺青年(ArtMan)和普通青年(NormalMan)各自的的吃饭和坐的行为的具体表现都不一样;
abstract class Person
{
abstract void eat();
abstract void set();
}
class ArtMan extends Person
{
void eat()
{
System.out.println("一根一根的吃");
}
}
class NormalMan extends Person
{
void eat()
{
System.out.println("一口一口的吃");
}
}
class B2 extends Person
{
void eat()
{
System.out.println("一坨一坨的吃");
}
void set()
{
System.out.println("腿搅成麻花儿");
}
void show()
{
System.out.println("腿搅成麻花儿");
}
}
...mian..//主函数
{
Person p = new B2();
p.eat();//实际调用的是B2里的方法
p.set();
//p.show();//编译通不过,在Person里找不到
}
Integer Character
其他的都是将首字母大写;
包装类和基本类型之间的转换:
Integer int
Integer i = new Integer(int value);
int i2 = i.intValue();
基本数据类型和String转换
String -->int
static int parseInt(String s)
int i = Integer.parseInt("123");
int ->String
String 类valueOf(int val);
String str = String.valueOf(123);
装箱和拆箱:
java5开始出现自动装箱和拆箱;
自动装箱:
可以直接把一个基本数据类型的值直接赋给它所对应的包装类对象;
Integer i = 17;
自动拆箱:把包装类对象直接赋给它所对应的基本类型的一个变量
int i2 = new Integer(2);
Object是所有类的超级父类,
Object的对象可以接受一切数据;
享元模式:
Byte,Short,Integer,Long缓存了一个区间的数据;[-128,127]看源代码
Integer i1 = 123;
Integer i2 = 123;
i1 == i2;//true
new Integer(123) == new Integer(123);//false
Object类:就是描述对象的一个类
是超级父类;
可以接受一切数据,包括数组;
Object o = {1,2,3};
Object o = new int[]{1,2,3};
boolean equals(Object otherObj);
就是那当前对象和otherObj相比较;
默认情况下,比较的是 内存里的地址,此时和 == 一样;
一般要求子类根据自身情况覆写该方法,
String 类覆写 equals方法
Integer 类也覆写了 equals方法
int hashCode();//返回对象的一个十进制的hash值,每个对象的hashCode都不一样
String toString();//把对象转成String类型, 描述对象信息
默认情况下, 类的全限定名 + @ + Integer.toHexString(this.hashCode());
一般要求子类覆写该方法
平时我们打印对象,其实打印的是对象的toString方法,也就说在底层该对象会去调用toString方法
class Person{
String name;
int age;
public Person(String name,int age)
{
this.name = name;
this.age = age;
}
public String toString()
{
return this.name +", " + this.age;
}
}
public static void mian (String []args)
{
System.out.println(new Person("Will",17));
System.out.println(new Person("Lucy",16));
}
代码块:
1.普通(局部)代码块,写在方法;
2.构造代码: 类里面,方法外面, 特点: 先于构造方法的执行,每次创建对象,都会执行
3.静态代码块: static 修饰的构造代码块, 特点: 优先于主方法的执行,只执行一次, 可以用来给静态变量赋值;
4.同步代码块
单例模式:
保证项目中的一个类在运行期间有且只有一个实例对象;
//1. 把构造方法给私有化,保证外界不能创建对象
//2. 自身在内部先创建一个对象,再使用private修饰起来,
//3. 向外暴露一个全局的静态的方法用于返回内部创建的对象;
因为静态成员只能访问静态成员,那么此时必须把对象使用static修饰,
饿汉式:
class Singleton
{
private Singleton(){}
private static final Singleton instance = new Singleton();
//线程安全
public static Singleton getInstance()
{
return instance;
}
}
懒汉式:
class Singleton
{
private Singleton(){}
private static final Singleton instance = null;
//线程不安全的
public static Singleton getInstance()
{
if(instance == null)
{
instance = new Singleton()
}
return instance;
}
}
final:
表示最终的;
可以修饰 类,方法,变量;
final 修饰的类 表示太监类,不能被继承;基本数据类型包装类全是
final 修饰的方法 表示 不能被子类覆写 ;
final 修饰的变量:
常量: 常量名大写,若是多个单词组成,单词之间使用下划线隔开;
全局常量: public static final 修饰的变量
常量只能赋值一次
若是引用类型的常量,表示 引用对象的地址不能变,但是对象的内容是可以改变的;
方法里的内部类,只能访问方法里使用 final 修饰的变量;
抽象类:
使用 abstract 修饰的类, 一般抽象类都应该包含抽象方法,但不是必须的;
若一个类有抽象方法,那么该类必须是抽象类;
不能创建对象(不能 new),其他的换个普通类一样
可以包含普通方法;
什么时候使用抽象方法:
父类定了子类应该具备的行为,但是 具体行为的实现必须得有子类来完成;
抽象方法:
使用 abstract 修饰的方法,
只有方法的申明,没有方法的具体实现;(交给子类去实现)
一般建议把 abstract 放在修饰符前面;
抽象类必须有子类,
而且子类必须全部覆写抽象类中的抽象方法,二者,子类也作为抽象类;
青年(Person)都有吃饭(eat)和坐(set)的行为;
但是文艺青年(ArtMan)和普通青年(NormalMan)各自的的吃饭和坐的行为的具体表现都不一样;
abstract class Person
{
abstract void eat();
abstract void set();
}
class ArtMan extends Person
{
void eat()
{
System.out.println("一根一根的吃");
}
}
class NormalMan extends Person
{
void eat()
{
System.out.println("一口一口的吃");
}
}
class B2 extends Person
{
void eat()
{
System.out.println("一坨一坨的吃");
}
void set()
{
System.out.println("腿搅成麻花儿");
}
void show()
{
System.out.println("腿搅成麻花儿");
}
}
...mian..//主函数
{
Person p = new B2();
p.eat();//实际调用的是B2里的方法
p.set();
//p.show();//编译通不过,在Person里找不到
}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。