20\21.static关键字

  /**
* static关键字
* 1.用static修饰后的方法,称为静态方法.
* 2.静态的方法特点,可以使用 类名.方法名称 调用方法
* 3.静态方法只能调用静态方法/字段,非静态方法,既可以调用静态方法/字段,也可以调用非静态方法/字段
* 4.被static 修饰后的字段是共享的
*/

  

  

  

  堆栈简单分析:

  

  代码:

 package com.day01.station.staticDemo;

 /**
* Created by Administrator on 2018/3/23.
*
* 类: 方法 (普通方法 构造方法)
* 字段/属性
* 代码块
*/
public class StaticObj {
private String name;
private Integer age;
private static String conuntry; /**
* static关键字
* 1.用static修饰后的方法,称为静态方法.
* 2.静态的方法特点,可以使用 类名.方法名称 调用方法
* 3.静态方法只能调用静态方法/字段,非静态方法,既可以调用静态方法/字段,也可以调用非静态方法/字段
* 4.被static 修饰后的字段是共享的
*/
public static void say(){//修饰的是放方法
//System.out.println("-----我是一个方法---------"+name);
say3();
} public void say2(){
System.out.println("-----我是一个方法2---------"+name+age);
say();
} public static void say3(){
System.out.println("-----我是一个方法3---------");
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} public String getConuntry() {
return conuntry;
} public void setConuntry(String conuntry) {
StaticObj.conuntry = conuntry;
}
}

  测试

 package com.day01.station.staticDemo;

 import org.junit.Test;

 /**
* Created by Administrator on 2018/3/23.
*/
public class TestStaticObj {
/**
* 测试目的: 验证加了static修饰的字段只用一份,是共享的
* 创建两个对象 第一个设置国家为中国 第一个设置国家为美国,如果后面的可以覆盖前面的,那么确实是共享的
*/
@Test
public void test3(){
// 创建两个对象
StaticObj staticObj1 = new StaticObj();
StaticObj staticObj2 = new StaticObj(); staticObj1.setConuntry("中国"); staticObj2.setConuntry("美国");
String conuntry2 = staticObj2.getConuntry();
System.out.println("conuntry2= "+conuntry2); String conuntry1 = staticObj1.getConuntry();
System.out.println("conuntry1= "+conuntry1); // System.out.println(" staticObj1= "+staticObj1);
// System.out.println(" staticObj2= "+staticObj2);
}
@Test
public void test2(){
StaticObj.say();
}
@Test
public void test(){
//以前
StaticObj staticObj = new StaticObj();
staticObj.say(); }
}

22.构造代码块与静态代码块

  代码:

 package com.day01.station.model;

 /**
* Created by lidongping on 2018/5/2.
*/
public class LoginUser2 {
private Integer id;
private String userName; /**
* 静态代码块 作用:初始化对象
* 1.只执行一次,不论创建多少个对象
*/
static {
System.out.println("------我是静态代码块-----");
} /**
* 构造代码块
* 1.每次创建对象都执行一次
* 2.可以有多个构造代码块,但是生产上一般只有一个
*/
{
System.out.println("-------我是构造代码块1------");
} /**
* 构造方法
*/
public LoginUser2() {
System.out.println("-------我是构造方法-----");
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
}
}

代码

  测试代码

 package com.day01.station.testDao;

 import com.day01.station.model.LoginUser2;
import org.junit.Test; /**
* Created by lidongping on 2018/5/2.
*/
public class TestLoginUser2 {
//测试构造代码块
@Test
public void test(){
LoginUser2 loginUser2 = new LoginUser2();
System.out.println("loginUser2="+loginUser2); LoginUser2 loginUser3 = new LoginUser2();
System.out.println("loginUser2="+loginUser3);
}
}

测试

23.接口简单使用

     

接口

 package com.day01.station.dao;

 import com.day01.station.model.Product;

 public interface IProductDao {
//增
public void save(String productName, int salePrice);
//删
public void delete(int id);
//改
public void update(int id,int salePrice,int costPrice);
//查
public Product query(int id);
}

接口

  实现

 package com.day01.station.dao.impl;

 import com.day01.station.dao.IProductDao;
import com.day01.station.model.Product; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet; public class ProductDao implements IProductDao {
@Override
public void save(String productName, int salePrice) {
System.out.println("--------我是增加方法---------");
System.out.println(" productName = " + productName + " , salePrice =" + salePrice);
try {
//1. 加载
Class.forName("com.mysql.jdbc.Driver");
// * 2. 连接
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test_web", "root", "admin");
// PreparedStatement prepareStatement(String sql)
// 创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。
String sql = "INSERT INTO product (product_name,sale_price) VALUES (?,?)";
//3.创建 预编译语句
PreparedStatement preparedStatement = connection.prepareStatement(sql);
// void setString(int parameterIndex, String x)将指定参数设置为给定 Java String 值。
preparedStatement.setString(1, productName);
preparedStatement.setInt(2, salePrice);
//添加参数
//preparedStatement.set
//4.执行
preparedStatement.executeUpdate();//重要提醒 不需要传入sql语句
//5.释放资源
preparedStatement.close();
connection.close(); } catch (Exception e) {
e.printStackTrace();
}
} @Override
public void delete(int id) {
System.out.println(" --------我是删除方法--------- ");
System.out.println("---id=" + id); try {
//1.加载
Class.forName("com.mysql.jdbc.Driver");
//2.连接
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/station_demo", "root", "admin");
//3.创建 预 编译语句
String sql = "DELETE FROM product WHERE id=?";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
//设定参数
preparedStatement.setInt(1, id);
//4.执行语句
preparedStatement.executeUpdate();
//5.释放资源
preparedStatement.close();
connection.close(); } catch (Exception e) {
e.printStackTrace();
}
} @Override
public void update(int id, int salePrice, int costPrice) {
System.out.println("--------我是修改方法---------");
try {
//1.加载
Class.forName("com.mysql.jdbc.Driver");
//2.连接
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/station_demo", "root", "admin");
//3.创建编译语句
String sql = "UPDATE product SET sale_price=?,cost_price=? WHERE id= ? ";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, salePrice);
preparedStatement.setInt(2, costPrice);
preparedStatement.setInt(3, id);
//4.执行语句
preparedStatement.executeUpdate();
//5.释放资源
preparedStatement.close();
connection.close(); } catch (Exception e) {
e.printStackTrace();
}
} @Override
public Product query(int id) {
System.out.println("------我是查询方法----------");
Product product = new Product();//袋子
try {
//1.加载
Class.forName("com.mysql.jdbc.Driver");
//2.连接
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/station_demo", "root", "admin");
//3.创建编译语句
String sql = "SELECT id,product_name,sale_price FROM product WHERE id=?";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, id);
//4.执行语句
ResultSet resultSet = preparedStatement.executeQuery();
//解析结果
while (resultSet.next()) {//如果有在执行里面
int id1 = resultSet.getInt("id");
String productName = resultSet.getString("product_name");
int salePrice = resultSet.getInt("sale_price");
//封装 袋子
//装
product.setId(id1);
product.setProductName(productName);
product.setSalePrice(salePrice);
}
//5.释放资源
resultSet.close();
preparedStatement.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
return product;
}
}

实现

  测试

 package com.day01.station.testDao;

 import com.day01.station.dao.impl.ProductDao;
import org.junit.Test; /**
* Created by lidongping on 2018/5/2.
*/
public class TestDao {
@Test
public void test(){
//1.创建dao对象
ProductDao productDao = new ProductDao();
//2.调用dao的方法
productDao.save("苹果10",8000); }
}

实现

24.业务层实现

  

  业务层接口代码

 package com.day01.station.service;

 /**
* 课程笔记:http://www.cnblogs.com/newAndHui/category/1153640.html
* 疑问咨询wx:851298348
*/ import com.day01.station.model.Product; /**
* 业务层接口命名规则: I+模型名称+Service 例如:IProductService
*/
public interface IProductService {
//增
public void save(Product product);
//删 根据id删除
public void delete(Integer id);
//改
public void update(Product product);
//查 根据id查询产品
public Product query(Integer id);
}

  业务层实现代码

 package com.day01.station.service.impl;

 import com.day01.station.dao.impl.ProductDao;
import com.day01.station.model.Product;
import com.day01.station.service.IProductService; /**
* 课程笔记:http://www.cnblogs.com/newAndHui/category/1153640.html
* 疑问咨询wx:851298348
*/
public class ProductService implements IProductService{
ProductDao productDao = new ProductDao(); @Override
public void save(Product product) {
//1.创建dao对象 //调用持久层保存方法
String productName = product.getProductName();
Integer salePrice = product.getSalePrice();
productDao.save(productName,salePrice); } @Override
public void delete(Integer id) {
productDao.delete(id);
} @Override
public void update(Product product) {
productDao.update(product.getId(),product.getSalePrice(),product.getCostPrice());
} @Override
public Product query(Integer id) {
Product prduct = productDao.query(id); return prduct;
}
}

03_java基础(八)之static关键字与代码块的更多相关文章

  1. 零基础学习java------day8------javabean编写规范,继承,static关键字,代码块,单例设计模式

    0. 今日内容提要 1. javabean书写规范 javabean:一个普通的类,用来描述事物的类,里面不包含任何的业务逻辑,只是用来存储数据. 比如:Teacher,Student,Mobile. ...

  2. java static关键字和代码块

    static关键字 代码块 方法重写 1. 方法重写的特点: 2. 注意事项: static关键字 为什么需要学习static关键字? 针对某一个变量属于类而不属于某一个具体的对象的时候,我们可以考虑 ...

  3. static关键字和代码块

    static关键字 static修饰的变量称为静态变量/共享变量/类变量 用于修饰类的成员,如成员变量.成员方法以及代码块等,内static修饰的成员具备一些特殊性 1.静态变量 在java类中使用s ...

  4. Java 基础 面向对象之关键字内部类代码块修饰符

    final final概念 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后 ...

  5. JAVA核心技术I---JAVA基础知识(static关键字)

    一:static特殊关键字用处 –变量 –方法 –类 –匿名方法 二:静态变量:类共有成员 –static变量只依赖于类存在(通过类即可访问),不依赖于对象实例存在. –所有的对象实例,对于静态变量都 ...

  6. java基础学习总结——static关键字

    一.static关键字

  7. [java基础]java中static关键字

    1.static概念 static是静态修饰符,什么叫静态修饰符呢?大家都知道,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序 ...

  8. 黑马程序员——JAVA基础之主函数main和静态static,静态代码块

    ------- android培训.java培训.期待与您交流! ---------- 主函数:是一个特殊的函数.作为程序的入口,可以被jvm调用. 主函数的定义: public:代表着该函数访问权限 ...

  9. 构造方法、封装、关键字(this、static)和代码块的介绍

    1.构造方法 1.1 构造方法与成员方法的区别 构造方法分为无参构造和有参构造,其中有参构造方法和无参构造方法为方法的重载关系. 构造方法在初始化一个类的对象时进行调用,它没有返回值,方法名与类名相同 ...

随机推荐

  1. express总结(一)

    Express 框架核心特性: 可以设置中间件来响应 HTTP 请求. 定义了路由表用于执行不同的 HTTP 请求动作. 可以通过向模板传递参数来动态渲染 HTML 页面. express保留了Nod ...

  2. Vue.js路由

    有时候,我们在用vue的时候会有这样的需求,比如一个管理系统,点了左边的菜单栏,右边跳转到一个新的页面中,而且刷新的时候还会停留在原来打开的页面. 又或者,一个页面中几个不同的画面来回点击切换,这两种 ...

  3. android 开发 实现一个自定义布局的AlertDialog对话框

    对话框有很多实现方法,最常见的是在一个点击事件中代码直接写出对话框.如下: package com.example.lenovo.mydemo2; import android.content.Dia ...

  4. [UGUI]修改顶点

    参考链接: https://blog.csdn.net/jk823394954/article/details/53870779 说明:unity版本5.3,新建一个Image,挂上以下的脚本 一.图 ...

  5. (二)apache atlas配置和运行

    上一篇文章,我们已经构建出了altas的安装包,所以我们继续使用安装包配置和运行atlas 首先解压atlas压缩包,授予bin目录下的执行权限 1.默认启动atlas cd atlas/bin/ p ...

  6. win7 数据源只有 SQL SERVER, WIN7 64bit 环境使用 access 作为 CIS的数据源

    最近换了个工作电脑,安装的是 WIN7 64BIT,结果配置CIS数据源的时候出现问题了,默认的数据源只有 SQL SERVER,没有ACCESS的数据源.后来在网上寻找了一圈后,找到了解决方法: C ...

  7. linux常用命令以及快捷键

    find命令查找某些文件并将其拷贝到指定目录 [root@host lib]# find -name "*hbase*.jar" |xargs -i cp {}  /root/aa ...

  8. C语言学习一个月后感想

    C语言学习一个月后感想 感谢李晓东老板及计算机工程师联盟的学长学姐和某神秘同级同学的辛勤指导,感谢宋雨田的督促和陪伴. 初识C的1..体会 我本以为凭借瓜皮思维和花里胡哨操作可以让我熟练地学习语言,现 ...

  9. MYeclipse 和 flex 环境配置

    1安卓JDK  运行 jdk-6u27-windows-i586 安装于 d:/programe/java,注意JRE和JDK安装在一起 测试是否安装成功,运行,CMD,javac 回车.或者java ...

  10. 白鹭引擎 - 对象的添加与删除 ( 开关效果 addChild, removeChild )

    class Main extends egret.DisplayObjectContainer { /** * Main 类构造器, 初始化的时候自动执行, ( 子类的构造函数必须调用父类的构造函数 ...