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包,就是说自定义 ...
随机推荐
- JVM体系结构与工作方式
JVM全程是java virtual machine(java虚拟机). 以计算为中心来看计算机的体系结构可以分为以下几个部分: 1.指令集:这个计算机所能识别的机器语言的命令集合; 2.计算单元:能 ...
- OAF_开发系列09_实现OAF预提取LOV设定(案例)
20150712 Created By BaoXinjian
- ubuntu下编译protobuf
参考: http://blog.csdn.net/wuzuyu365/article/details/51900676 1.下载protobuf下载地址:https://github.com/goog ...
- SQL2008 清除日志
USE [master] GO ALTER DATABASE BizTest SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE BizTest SE ...
- JQuery easyui Datagrid 分页事件
easyui是Jquery中的一个轻量级UI插件,提供了一些诸如window.datagrid.button等控件.现在主要说说Datagrid中分页控件的使用. easyui中可以单独添加分页pag ...
- Tomcat服务相关
1. 将Tomcat安装成服务. 找到bin\service.bat文件,往cmd命令行窗口一拉,如果只提示service /remove [../..]那就是Tomcat和java的路径配置没问题. ...
- 使用WinRAR创建可执行程序(例如:Java程序打包 成exe)
不管你是java.c.还是xx程序,只要打包成可以双击运行/或者命令行运行,都可以用WinRAR软件生成压缩格式的exe文件,目标电脑可以没安装解压软件,依然可以运行解压. 第一步:准备压缩的所有文件 ...
- (转载)FT232RL通信中断问题解决办法总结
原文地址:http://cuiweidabing.blog.163.com/blog/static/66631928201101514021658/ FT232RL是FTDI(www.ftdichip ...
- C#获取网页内容的三种方式
C#通常有三种方法获取网页内容,使用WebClient.WebBrowser或者HttpWebRequest/HttpWebResponse... 方法一:使用WebClient (引用自:http: ...
- C++设计模式-Prototype原型模式
作用: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. Prototype模式提供了一个通过已存在对象进行新对象创建的接口(Clone), Clone()实现和具体的语言相关,在C+ ...