java对象为什么new,java中,什么时候需要new来实例化
很多朋友对于java对象为什么new和java中,什么时候需要new来实例化不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
java中dao层和service层的区别,为什么要用service
首先解释面上意思,service是业务层,dao是数据访问层。
呵呵,这个问题我曾经也有过,记得以前刚学编程的时候,都是在service里直接调用dao,service里面就new一个dao类对象,调用,其他有意义的事没做,也不明白有这个有什么用,参加工作久了以后就会知道,业务才是工作中的重中之重。
我们都知道,标准主流现在的编程方式都是采用MVC综合设计模式,MVC本身不属于设计模式的一种,它描述的是一种结构,最终目的达到解耦,解耦说的意思是你更改某一层代码,不会影响我其他层代码,如果你会像spring这样的框架,你会了解面向接口编程,表示层调用控制层,控制层调用业务层,业务层调用数据访问层。初期也许都是new对象去调用下一层,比如你在业务层new一个DAO类的对象,调用DAO类方法访问数据库,这样写是不对的,因为在业务层中是不应该含有具体对象,最多只能有引用,如果有具体对象存在,就耦合了。当那个对象不存在,我还要修改业务的代码,这不符合逻辑。好比主板上内存坏了,我换内存,没必要连主板一起换。我不用知道内存是哪家生产,不用知道多大容量,只要是内存都可以插上这个接口使用。这就是MVC的意义。
接下来说你感觉service的意义,其实因为你现在做东西分层次不是那么严格,在一个你们做东西业务本身也少,举个最简单的例子,你做一个分页的功能,数据1000条,你20条在一个页,你可以把这个功能写成工具类封装起来,然后在业务层里调用这个封装的方法,这才是业务里真正干得事,只要没访问数据库的,都要在业务里写。
再有不明白的追问,这是经验问题,呵呵,其实以后你就会懂。只是刚开始写的代码都是有个请求,我就去数据库取,业务几乎没有。
java中,什么时候需要new来实例化
(1)同一个对象在不同时刻体现出来的不同状态。
(2)多态的前提:
A:有继承或者实现关系。
B:有方法重写。
C:有父类或者父接口引用指向子类对象。
多态的分类:
a:具体类多态
class Fu{}
class Zi extends Fu{}
Fu f= new Zi();
b:抽象类多态
abstract class Fu{}
class Zi extends Fu{}
Fu f= new Zi();
c:接口多态
interface Fu{}
class Zi implements Fu{}
Fu f= new Zi();
(3)多态中的成员访问特点
A:成员变量
编译看左边,运行看左边
B:构造方法
子类的构造都会默认访问父类构造
C:成员方法
编译看左边,运行看右边
D:静态方法
编译看左边,运行看左边
为什么?
因为成员方法有重写。
(4)多态的好处:
A:提高代码的维护性(继承体现)
B:提高代码的扩展性(多态体现)
(5)多态的弊端:
父不能使用子的特有功能。
现象:
子可以当作父使用,父不能当作子使用。
(6)多态中的转型
A:向上转型
从子到父
B:向下转型
从父到子
java new一个实例对象,为什么不等于null
User user= new User();
你是在这儿实例化的,并没有初始化为 null
如果查找不到记录就返回 null的话,你可以这样
public void findByUsername(String username) throws Exception{
Connection conn= null;
User user= null;//初始化 user为null
try{
conn= DBUtil.getConnection();
String sql="select* from t_user where username=?";
PreparedStatement prep= conn.prepareStatement(sql);
prep.setString(1, username);
ResultSet rs= prep.executeQuery();
if(rs.next()){//如果返回一条记录,此处不要使用 while
user= new User();//如果有返回记录,则初始化 User,并赋值
user.setUsername(rs.getString("username"));
user.setName(rs.getString("name"));
user.setPwd(rs.getString("pwd"));
user.setGendar(rs.getString("gendar"));
}
} catch(Exception e){
e.printStackTrace();
} finally{
}
System.out.print("根据注册的用户名字段,到数据库t_user表中匹配。当该用户名不存在时,检验返回的user是否等于null:");
System.out.println(user== null);
return user;
}
请问java里面为什么有时候声明对象的时候不用new
这个问题和java编程里用到的一些常用模式有关,有的时候你用new会出错,这主要是为了编程方便很安全两方面考虑。一般不用new的有两种最常用的模式,一是工厂模式,另一个是单例模式,工厂模式是通过工长类来得到一个实例,一般是AA aa=Fatory.getAA();这里就没用new。还有一种情况就是单例模式,这里主要是出于安全考虑了,在单例模式中,类的实例只允许有一个,并且有它自己自动提供这个实力。外部不能创建它的实例,因为它的构造函数是private的,所有使用new的时候会出错。当然它还要有一个静态的返回实例的方法。
关于java对象为什么new和java中,什么时候需要new来实例化的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。