java中两种占位符的使用方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中两种占位符的使用方式相关的知识,希望对你有一定的参考价值。

java中两种占位符的使用方式

String stringFormat  = "lexical error at position %s, encountered %s, expected %s ";  
System.out.println(String.format(stringFormat, 123, 100, 456));  
String messageFormat ="lexical error at position 0, encountered 1, expected 2";  
System.out.println(MessageFormat.format(messageFormat, new Date(), 100, 456));

先学现卖 哈哈


http://dikar.iteye.com/blog/783115

参考技术A 1、new  使用java的关键字new来创建对象实例。构造函数链中的所有构造函数都会被自动调用。Java代码:   CreateInstance instance = new CreateInstance ();2、clone 构造函数不被自动调用。  Java代码:    public class CreateInstance implements Cloneable    public CreateInstance getInstance() throws CloneNotSupportedException     return (CreateInstance) this.clone();   如果需要复制上面的那个obj指向的对象实例时,调用newCreateInstance().getInstance()方法就ok了。JDK中Object#clone()方法的原型是:protectednativeObjectclone()throws CloneNotSupportedException;方法修饰符是protected,而不是public。 这种访问的不可见性使得对Object#clone()方法不可见。所以,必需重写Object的clone方法后才能使用。 Java代码:    public class CreateInstance implements Cloneable    public CreateInstance clone throws CloneNotSupportedException     return (CreateInstance) super.clone(); 值得注意的是 :如果需要使用clone方法,必需实现java.lang.Cloneable接口,否则会抛出java.lang.CloneNotSupportedException。 另外clone方法所做的的操作是直接复制字段的内容,换句话说,这个操作并不管该字段对应的对象实例内容。 像这样字段对字段的拷贝(fieldtofieldcopy)就成为"浅拷贝",clone方法所做的正是"浅拷贝"。3、newInstance 利用java.lang.Class类的newInstance方法,则可根据Class对象的实例,建立该Class所表示的类的对象实例。 创建CreateInstace类的对象实例可以使用下面的语句(这样需要一个已经存在的对象实例)。 CreateInstance instance = CreateInstance.class.newInstance(); 或者使用下面的语句(只需要存在相应的.class文件即可) CreateInstance instance = (CreateInstance)Class.forname("com.create.instance.CreateInstance").newInstance(); 如果包下不存在相应.class文件,则会抛出ClassNotFoundException。 注意 :newInstance创建对象实例的时候会调用无参的构造函数,所以必需确保类中有无参数的构造函数,否则将会抛出java.lang.InstantiationException异常。 无法进行实例化。

mybatis中两种取值方式?谈谈Spring框架理解?

1.mybatis中两种取值方式?

  回答:Mybatis中取值方式有几种?各自区别是什么? Mybatis取值方式就是说在Mapper文件中获取service传过来的值的方法,总共有两种方式,通过 $ 和 # , # 是 我们最常用的方式。 我们都说Mybatis是封装了JDBC,所以两种方式的区别还要从JDBC上来说, # 实际上是封装了问号占位符赋值的 方式,会使用JDBC中的PreparedStatement,变量处用?号代替,防止SQL注入。 $ 直接拼接到sql语句中,值没有任何修饰,存在sql注入风险。 项目中 用 # 比较多,一般 # 和 $ 会配合使用。如果取值去的是字段名的时候,需要使用到 $ ,如:排序 order by ${列名} "列名" 案例: 使用#符号,如 select * from test where value=#{param} 传入参数param=”hello”后,实际生成 select * from test where value=‘hello‘ 。 使用$符号,$表示原本的字符串,即传什么参数,SQL中就填入什么。如 select * from test order by # {param} 传入参数param=”time”后,实际生成 select * from test order by time 。

2.谈谈Spring框架理解?

IOC

  IOC:inversion of controll 控制反转,就是将原来通过new 关键字创建对象的权力,交给spring由工厂创建对象。 DI:(dependcy Injection) 依赖注入,Spring工厂不仅要创建对象 还维护类与类之间 类类中属性之间依赖关系 。 IOC和DI实际上是等同的概念,如果要进行区分的话,IOC和DI可以理解为同一个东西的不同角度看法,IOC 站在程序员的角度,以前创建对象是我们自己new出来的,现在让容器自己创建,控制权交给了容器,对于 我们来说控制权反转了。 DI是站在容器的角度,从Spring角度来看,用到的所有的对象都是自己创建的,并且对象在创建的时候需要 依赖的参数也是容器注入的,而这种维持对象之间依赖关系的方式就是依赖注入。 所以IOC和DI实际上都是指容器负责创建对象和维护对象之间依赖关系的这种行为。

AOP

   AOP:(Aspect Oriented Programing)面向切面编程 就是通过为项目中某些类创建动态代理对象,通过动态代理对 象解决现有项目中通用问题,例如日志,性能记录。AOP代表的是一个横向的关系,程序是顺序执行的,可以简单理解为线性执行,自上而下,就象一条线,所 谓切面编程就是,在这条线的某一点(切点)处切开,放入另一个程序(增强处理),这个过程就是我们常 说的织入,而被切入处可以用几何常识形象的称之为切面。

 

Spring中生成代理方式几种,分别是什么,默认使用哪种,如何切换生成代理方式?

  回答:两种,JDK动态代理,基于接口(默认使用的jdk)。CGLIB,基于继承(要使用需要配置)。 配置aop true使用CGLIB产生代理对象 false 使用jdk 默认false。 JDK动态代理 由Java SDK提供,Java SDK动态代理的局限在于,它只能为接口创建代理,返回的代理对象也只能转换到某 个接口类型。 CGLIB动态代理 第三方库cglib提供,cglib的实现机制与Java SDK不同,它是通过继承实现的,它也是动态创建了一个类,但 这个类的父类是被代理的类。 通过代码模拟事务控制 JDK动态代理 Java SDK代理的是对象,需要先有一个实际对象,自定义的InvocationHandler引用该对象,然后创建一个代理类 和代理对象,客户端访问的是代理对象,代理对象最后再调用实际对象的方法 .Cglib动态代理 cglib代理的是类,创建的对象只有一个。

以上是关于java中两种占位符的使用方式的主要内容,如果未能解决你的问题,请参考以下文章

最常用两种java中的占位符的使用

如何更改输入标签占位符的语言?

JDBC中?占位符的使用说明

Java 占位符使用 和 修饰符

打造一个支持占位符的多行文本输入框

java中有啥方法可以读取占位符的字符串,并且把占位符替换成参数