音乐节初步 完成数据库链接及封装 代码会有所改动
public class Music {
int id;
String name;
String author;
@Override
public String toString() {
return "Music{" +
"序号:" + id +
", 音乐名:'" + name + '\'' +
", 作者:'" + author + '\'' +
'}';
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static List<Music> musics(List<Music> musics)
{
Connection connection=null;
PreparedStatement statement=null;
ResultSet resultSet=null;
try {
connection=Test1.connection();
String sql="select * from music";
statement = connection.prepareStatement(sql);
resultSet = statement.executeQuery();
while(resultSet.next()){
Music music=new Music();
music.setId(resultSet.getInt(1));
music.setName(resultSet.getString(2));
music.setAuthor(resultSet.getString(3));
musics.add(music);
}
} catch (Exception e) {
e.printStackTrace();
}
finally {
Test1.cLose(resultSet,connection,statement);
}
return musics;
}
public static void main(String[] args) {
List<Music> music=new ArrayList<>();
System.out.println(musics(music));
}
}
public static List<Music> iNSERT(String name,String author){
Connection connection=null;
PreparedStatement statement=null;
ResultSet resultSet=null;
List<Music> musics=new ArrayList<>();
try {
connection= Dbutill.connection();
String sql="insert into music(name,author) value(?,?)";
statement = connection.prepareStatement(sql);
statement.setString(1,name);
statement.setString(2,author);
statement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
finally {
Dbutill.cLose(resultSet,connection,statement);
}
return musics;
}
public static List<Music> dELECT(int i){
Connection connection=null;
PreparedStatement statement=null;
ResultSet resultSet=null;
List<Music> musics=new ArrayList<>();
try {
connection= Dbutill.connection();
String sql="delete from music where id=?";
statement = connection.prepareStatement(sql);
statement.setInt(1,i);
statement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
finally {
Dbutill.cLose(resultSet,connection,statement);
}
return musics;
}
public static List<Music> uPDATA(int id,String name,String author){
Connection connection=null;
PreparedStatement statement=null;
ResultSet resultSet=null;
List<Music> musics=new ArrayList<>();
try {
connection= Dbutill.connection();
String sql="update music set name=?,author=? where id=?";
statement = connection.prepareStatement(sql);
statement.setString(1,name);
statement.setString(2,author);
statement.setInt(3,id);
statement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
finally {
Dbutill.cLose(resultSet,connection,statement);
}
return musics;
}
}
import java.sql.*;
public class Test1 {
public static Connection connection() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/zjgm?user=root&password=123456");
return connection;
}
public static void cLose(ResultSet resultSet, Connection connection, Statement statement){
if (resultSet!=null){
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (statement!=null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
主函数
Musicdao musicdao=new Musicdao();
musicdao.iNSERT("w","a");
musicdao.dELECT(10);
uPDATA(1,"s","s");
System.out.println(musicdao.sElect());
基本面试题
1.在JAVA中如何跳出当前的多重嵌套循环?
方法一:可以在需要的循环语句前定义一个标号,
然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环
方法二:可以在需要的循环条件内加入一个boolean类型的判断,需要的时候将此变量值反转,再break当前循环即可跳出。
2.java的8大基本数据类型
byte(位) 8
short(短整数)
int(整数) 32
long(长整数)
float(单精度)
double(双精度)
char(字符)
boolean(布尔值)
3.switch语句能否作用在byte上,能否作用在long上,能否作用在String上?
能 不能 能
4.用最有效率的方法算出2乘以8等於几?
2 << 3
5.静态变量和实例变量的区别?
首先在语法定义上区别:静态变量前面要加static,实例变量不用
实例变量输入对象的属性,必须创建了实例对象(如 new)才会被分配空间,才可以使用实例变量,静态变量不属于某个实例对象,而是属于类,也叫类变量,只要程序加载了类的字节码,不用创建任何实例对象就会被分配空间,就可以被使用
6.Integer与int的区别
1、Integer是int的包装类,int则是java的一种基本数据类型
2、Integer变量必须实例化后才能使用,而int变量不需要
3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 。
4、Integer的默认值是null,int的默认值是0
7.GC是什么?为什么要有GC?
垃圾收集 垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存
8.JDBC编程有哪些不足之处?
1、JDBC:数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。
MyBatis:在SqlMapConfig.xml中配置数据链接池,使用连接池管理数据库链接。
2、JDBC:Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大。
3、JDBC:向sql语句传参数麻烦,因为sql语句的where条件不一定,可能多也可能少,占位符需要和参数一一对应。
4,JDBC:对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象解析比较方便。
9.Java中的泛型是什么 ? 使用泛型的好处是什么?
泛型其实就是在定义类、接口、方法的时候不局限地指定某一种特定类型,而让类、接口、方法的调用者来决定具体使用哪一种类型的参数。
1、类型安全,提供编译期间的类型检测
2、前后兼容
3、泛化代码,代码可以更多的重复利用
4、性能较高,用GJ(泛型JAVA)编写的代码可以为java编译器和虚拟机带来更多的类型信息,这些信息对java程序做进一步优化提供条件。