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里找不到
}
Java类额应用的更多相关文章
- Java类文件最大限制
今天在往一个jsp文件里添加代码时,项目跑起来访问这个jsp时报错.. The code of method _jspService(HttpServletRequest, HttpServletRe ...
- 别翻了,这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析【JVM篇二】
目录 1.什么是类的加载(类初始化) 2.类的生命周期 3.接口的加载过程 4.解开开篇的面试题 5.理解首次主动使用 6.类加载器 7.关于命名空间 8.JVM类加载机制 9.双亲委派模型 10.C ...
- 如何用Java类配置Spring MVC(不通过web.xml和XML方式)
DispatcherServlet是Spring MVC的核心,按照传统方式, 需要把它配置到web.xml中. 我个人比较不喜欢XML配置方式, XML看起来太累, 冗长繁琐. 还好借助于Servl ...
- jvm系列(一):java类的加载机制
java类的加载机制 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装 ...
- java类与实例
最近在看设计模式,感觉自己对java的三大特性的理解不够清晰,搞不清楚抽象类.接口.泛型的用处和优缺点.设计模式学了一半,想着还是停下来脑补一下java的基础,就从java对象开始吧. 一.java对 ...
- oracle调用JAVA类的方法
导入jar包 在oracle中导入需要的jar包,我们把编辑好的java类打成jar包,直接在oarcle里面写简单的调用就可以了, 1.操作系统需要拥有支持loadjava命令的jdk. 2.加 ...
- Java 类的实例变量初始化的过程 静态块、非静态块、构造函数的加载顺序
先看一道Java面试题: public class Baset { private String baseName = "base"; // 构造方法 public Baset() ...
- hibernate中java类的成员变量类型如何映射到SQL中的数据类型变化
hibernate映射文件??.hbm.xml配置映射元素详解--Hibernate映射类型 在从Hibernate的java的成员类型映射到SQL中的数据类型,其内映射方式它满足,SQL可以自己调制 ...
- kettle系列-[KettleUtil]kettle插件,类似kettle的自定义java类控件
该kettle插件功能类似kettle现有的定义java类插件,自定java类插件主要是支持在kettle中直接编写java代码实现自定特殊功能,而本控件主要是将自定义代码转移到jar包,就是说自定义 ...
随机推荐
- project euler 开坑
pe76: 要把100写成至少2个数的和的形式,有多少种方案数 整数拆分 f(i,j)表示把i拆分成不超过j的数的和的方案数 f(i,j) = f(i-j,j) + f(i,j-1) j <= ...
- Android Studio使用总结
记录Android-Studio遇到的各种坑 http://blog.csdn.net/u012874222/article/details/50616698 Android Studio 权威教程 ...
- css 画基本图形
抄于http://dongtianee.sinaapp.com/demo9.html /******************************************************** ...
- Delphi DateUtils时间单元
Uses DateUtils //时间单元,非常有用. 记得引用这个单元,不然不能用. CompareDate 比较两个日期时间值日期部分的大小 CompareDateTime 比较两个日期时间值的大 ...
- PlayerPrefs游戏存档
本地存储.相当于Flash里面的SharedObject. Android位置:机器自身存储的(非扩展卡)/data/data/appname/shared_prefs/{AppName}.xml,如 ...
- Nice Validator(Form验证)及Juery zTree控件
http://niceue.com/validator/demo/match.php http://www.ztree.me/v3/demo.php#_603
- 转:中间人攻击利用框架bettercap测试
0x00前言 上篇提到内网渗透很有趣,这次就从一款新工具说起: bettercap 0x01简介 bettercap可用来实现各种中间人攻击,模块化,便携.易扩展 0x02特点 提到中间人攻击,最知名 ...
- jQuery中时间戳和日期的相互转换
在项目中经常会使用时间戳和日期的相互转换,可以参考如下代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 ...
- jquery 城市三级联动
js代码 /*城市三级联动 * @method cityChange * @param allProvince,allCity,allDistrict */ function cityChange(p ...
- uva11292 Dragon of Loowater
水题,排序遍历即可 #include<iostream> #include<cstdio> #include<algorithm> using namespace ...