Java小白进阶之路(一)

本文深入讲解Java中的字符串操作、包装类使用、数组与集合管理、日期格式化、链表操作、迭代器应用、哈希集合、映射结构、JDBC数据库交互及异常处理等关键知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、字符串操作:replace方法(旧字串,新子串)。

Scanner scanner = new Scanner(System.in);
System.out.println("请输入");
// 接收用户的输入的字符串
String s1 = scanner.next();
// 接受整型
int n1 = scanner.nextInt();
System.out.println(s1,+n1);

//打印长度
System.out.println(s1.length());

//替换字符串
System.out.println(s1.replace("cao","***"));

2、String string = new String("abcnjsdvjjioasdf");  初始化一个字符串,不带new遇见相同值时公用一个对象。

//  值虽然相同但是不共用一个对象
String s1 = new String("123");
String s2 = new String("123");

共用一个对象:

String s1 ="123";
String s2 = "123";

3、包装类:int--->Integer   char---->charactor   long---> Long  经过这样转化就成了一个对象

int m = 2;
String s = "132";
Integer n1 = new Integer(m);

// string.valueof(i)将整形的i转换为字符串
System.out.println(String.valueOf(s));

//a1.tostring()转换成为字符串
System.out.println(n1.toString());

// Integer.valueof(变量)   获得值。getClass()  获取
System.out.println(Integer.valueOf(n1)+"--->"+n1.getClass());

//  Integer.parserInt(字符串) 转换为INT型。
System.out.println(Integer.parseInt(s));

4、随机数

第一种方式:用math.random()。产生一个0--1的随机数。

double pa = Math.random();

第二种:Random类

//  随机数种子,种子相同产生的随机数都相同
Random random = new Random(6);
//  产生什么类型的随机以及范围
System.out.println(random.nextInt(6));
System.out.println(random.nextBoolean());

5、简单的日期格式 SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E");  格式
String string = sdf.format(date);   //将日期格式化自定义好的格式,也可以用于检查格式,不符合,会抛异常
sdf.parser(String)//解析一个字符串的日期格式,不符合就抛出异常

6、Stringbuffer:占内存小。stringbuffer 才有revers,insert之类的方法。赋值以后无法改变,也无法判断两个字符串是否相等,因为StringBuffer没重写equals方法,直接继承了Object的equals方法,所以无法判断两个字符串是否相等。

7、 getter、setter:Java的setter和getter。

public class Main {
    public static void main(String[] args){
        Student s1 = new Student();
        s1.setName("Jax");
        System.out.println(s1.getName());
    }
}
class Student{
    private String name;
    public String getName(){
        return this.name;
    }

    public void setName(String name){
        this.name = name;
    }
}

8、构造方法:没有返回值,如果想返回错误,就只能抛出一个异常。

class Student{
    String name;
    public Student(String name){
        this.name = name;
        throw new IOException("文件读取错误");
    }
}

9、数组 ArrayList:ArrayList<String> list = new ArrayList<>();  String 就是泛型,这个数组只允许存String类型。

List<String> list = new ArrayList<>();
// 添加元素
list.add("1");
// 通过索引删除
list.remove(1);
// 数组的长度
System.out.println(list.size());

10、迭代器:省内存。iteration。

ArrayList<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
// 创建一个迭代器
Iterator<String> iter = list.iterator();
//是否有下一个节点
while (iter.hasNext()){
     System.out.println(iter.next());
 }

11、addfirst()、removefirst() 、getFirst()这些都是LinkedList特有的方法,但也有add()和remove()方法。isEmpty()是否为空.

// 链表 类似栈
LinkedList<String> linkedlist=new LinkedList<>();
// 在第一个位置添加元素
linkedlist.addFirst("1");
linkedlist.addFirst("2");
linkedlist.addFirst("3");
// 删除第一个元素
linkedlist.removeFirst();
// 获得第一个元素
System.out.println(linkedlist.getFirst());

12、加强for循环:for(类型   变量:遍历的对象)  类型要与可遍历对象类型一致。

for(String i:linkedlist){
    System.out.println(i);
}

13、哈希Set:  Set<e> set=new HashSet<e>(),用的不多。set是无序的。

14、Map:由键值对组成。

// 指定key、value 的类型。
Map<String,Integer> a1 = new HashMap<>();
// 通过put添加值
a1.put("jax",19);
a1.put("asche",18);
// 值集
System.out.println(a1.values());
//  键集
System.out.println(a1.keySet());
// 键值对
System.out.println(a1.entrySet());
//通过remove key删除元素
a1.remove("asche");
System.out.println(a1);

15、JDBC:Java与数据库交互的方式

连接数据库的五步:

public static void main(String[] args) throws ClassNotFoundException, SQLException {
//		加载驱动,不同数据库驱动不同
Class.forName("com.mysql.jdbc.Driver");
//		获得URL
String url = "jdbc:mysql://localhost:3306/new";
//		登录、链接数据库
Connection con = DriverManager.getConnection(url, "root", "zyz521");
//		创建一个语句执行对象
Statement st = con.createStatement();
//		执行语句
//        st.execute("delete from student where id=1");
//		所有的结果放入ResultSet
        ResultSet rs = st.executeQuery("select * from person");
//		判断是否有下一个
        while(rs.next()){
//			可以通过id或者字段名得到数据,必须要以类型定义一样
            int id = rs.getInt("id");
            String name = rs.getString(2);
            int age = rs.getInt(4);
            String sex = rs.getString(3);
            System.out.println(id+":"+name+":"+age+":"+sex);
        }
//		关闭连接,反着关
        rs.close();
        st.close();
        con.close();
    }

查询单一元素:

// 返回Person对象,类继承BaseDao
public Person get_Person(int n){
super.connect();
        Person p = new Person();
        try {
            // 通过预编译可以防止恶意的sql注入
            String sql = "select * from person where id=?";
            pstmt = conn.prepareStatement(sql);
            设置参数(index,value)
            pstmt.setInt(1,n);
            // 放到结果集,Query返回一个表
            rs = pstmt.executeQuery();
            // 检查是否还有下一个元素
            while (rs.next()){
                // rs.getInt(index[colunm_name])
                p.setId(rs.getInt(1));
                p.setName(rs.getString(2));
                p.setPass(rs.getString(3));
                p.setBirth(rs.getString(4));
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        finally {
            super.closeAll();
        }

        return p;

查询全部/多个元素:

public ArrayList<Person> get_Allperson(){
Person p = null;
// 通过定义数组来保存元素
ArrayList<Person> list = new ArrayList<>();
super.connect();
try {
      String sql = "select * from person";
//    防止sql注入
      pstmt = conn.prepareStatement(sql);
      rs = pstmt.executeQuery();
      while (rs.next()){
          p = new Person();
          p.setId(rs.getInt(1));
          p.setName(rs.getString(2));
          p.setPass(rs.getString(3));
          p.setBirth(rs.getString(4));
          list.add(p);
       }
     }catch (Exception e){
            e.printStackTrace();
     }finally {
            super.closeAll();
     }
        return list;
    }

插入:调用时先通过调用实体类的setter方法进行赋值,然后调用该方法。

public Integer insert(Person p){
super.connect();
int row = 0;
try {
        // ? 是占位符
     String sql = "insert into person(name,pass,birth) values(?,?,?)";
     pstmt = conn.prepareStatement(sql);
     pstmt.setString(1,p.getName());
     pstmt.setString(2,p.getPass());
     pstmt.setString(3,p.getBirth());
     row = pstmt.executeUpdate();
}catch (Exception e){
     e.printStackTrace();
}finally {
     super.closeAll();
}
   return row;
}

删除:

public Integer delete(int n){
int row = 0;
super.connect();
try {
      String sql = "delete from person where id=?";
      pstmt = conn.prepareStatement(sql);
      pstmt.setInt(1,n);
      //  Update 返回受影响的行数
      row = pstmt.executeUpdate();
}catch (Exception e){
    e.printStackTrace();
}finally {
    super.closeAll();
}
    return row;
}

更新:先获取要修改对象的全部值,然后通过setter方法进行修改,防止部分修改导致数据库出现空值的情况。

public Integer update(Person p){
super.connect();
Integer row = 0;
try {
     String sql = "update person set pass=? where id=?";
     pstmt = conn.prepareStatement(sql);
     pstmt.setString(1,p.getPass());
     pstmt.setInt(2,p.getId());
     row = pstmt.executeUpdate();
}catch (Exception e){
    e.printStackTrace();
}finally {
    super.closeAll();
}
     return row;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值