1、char:两个字节,可以输入汉字
eg:下面的输出为“好”
char ch='好'; System.out.println(ch);
byte、int、char可以相互转化:(char)readByte();//byte强转成char
3、文件的读写:字节流和字符流
(1)字节流:两个基类InpuStream和OutputStream
例子:用FileInpuStream和FileOutputStream来读写
注意:用字节流写进文件的数据,要用字节流读出来,否则乱码
输出时,将char[]和byte[]转成String时,用String(b,0,ch)这个方法,不能用String(b),否则出现乱码,因为返回值的长度不一定等于b的长度。详情见JDK中的String
package fiveDay; import java.io.*; public class fileIO { public static void main(String[] args) throws FileNotFoundException { File f=new File("./1.txt"); //写入 //OutputStream是基类,FileOutputStream是子类,里面有方法实现,下向上转型 OutputStream fw=new FileOutputStream(f); //异常处理,否则提示错误 try {//下面的123是字符串不是int,所以可以读出来 //如果是write(123),就读不出来 //fw.write(3);//此时运行结果就会出现""; fw.write("hello 123".getBytes()); } catch(IOException e) { e.printStackTrace(); } //异常处理,否则提示错误 try { fw.close(); } catch(IOException e) { e.printStackTrace(); } //读取 InputStream fr=new FileInputStream(f); String s=""; int ch=0;//如果不初始化,那么在下面输出的时候会提示错误 byte b[]=new byte[1025]; try { ch=fr.read(b); } catch(IOException e) { e.printStackTrace(); } try { fw.close(); } catch(IOException e) { e.printStackTrace(); } //byte[]转string,用String(byte[] b,offset,length)来转换 //不要用String(byte[] b),因为后者长度可能不等于b的长度,详情见jdk; System.out.println(new String(b,0,ch)); } }(2)字符流:两个基类Reader和Writer
例子:两个子类FileReader和FileWriter
package fiveDay; import java.io.*; public class ReaderWriter { public static void main(String[] args) { File f=new File("./2.txt"); //--------------写入---------------- Writer fw=null;//定义在try的外面,否则后面没法使用这个fr //异常处理 try{fw=new FileWriter(f);} catch(IOException e){e.printStackTrace();} try{fw.write("hello");} catch(IOException e){e.printStackTrace();} try{fw.close();} catch(IOException e){e.printStackTrace();} //--------------读取----------------- Reader fr=null; char[] c=new char[1024]; int ch=0; //异常处理 try{fr=new FileReader(f);} catch(IOException e){e.printStackTrace();} try{ch=fr.read(c);} catch(IOException e){e.printStackTrace();} try{fw.close();} catch(IOException e){e.printStackTrace();} //---------------输出显示------------ System.out.println(new String(c,0,ch)); } }3、连接数据库Mysql
/** * */ /** * @author Administrator * */ package fiveDayMysql; import java.sql.DriverManager; import java.sql.Connection; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; public class mysqlTest { public static void main(String[] args){ try { //前面都一样,就是端口和后面的数据库名不同; String url="jdbc:mysql://localhost:3306/connect"; String user="root"; String pwd="root"; //加载驱动,这一句也可写为:Class.forName("com.mysql.jdbc.Driver"); Class.forName("com.mysql.jdbc.Driver").newInstance(); //建立到MySQL的连接 Connection conn = DriverManager.getConnection(url,user, pwd); //执行SQL语句 Statement stmt = conn.createStatement();//创建语句对象,用以执行sql语言 ResultSet rs = stmt.executeQuery("select * from person"); //处理结果集 while (rs.next()) { String name = rs.getString("name"); System.out.println(name); } rs.close();//关闭数据库 conn.close(); } catch (Exception ex) { System.out.println("Error : " + ex.toString());} } }4、关于下转上的作用
许多抽象类定义对象时,喜欢用其子类进行实例化,是因为这样不仅可以调用子类中实现的方法,也可以调用自己类中非抽象的方法;
package fiveDay; abstract class A { public abstract void run(); public void eat() { System.out.println("eat"); } } class B extends A { public void run() { System.out.println("run"); } } public class abstractTest { public static void main(String[] args) { // TODO Auto-generated method stub A a=new B(); a.eat();//输出eat a.run();//输出run } }