01_三元运算符
* 格式:
* 条件 ? 表达式1 : 表达式2;
* 执行顺序:
* 先判断条件是否成立, 成立走表达式1,不成立走表达式2.
02_switch-case语句
* 格式:
switch(变量) {
case 值1:
执行的语句;
break;
case 值2:
执行的语句;
break;
.... //好多case
default:
执行的语句;
break;
}
实现: 定义一个方法,传入一个数, 如果是1-7就输出: 对应的星期数, 否则输出: 无效日期.
* 细节:
* 问题一: break 能省略吗?
* 最后一个break可以省略,对结果没有影响, 其他的break如果省略的话,可能会发生case穿透.
* 问题二: if 语句和 switch 语句的应用场景有什么区别?
* 当判断的是 区间 的时候, 就考虑用 if 语句.
* 当判断的是 固定值 的时候, 就考虑用 switch 语句.
* 问题三: switch 后边的小括号中可以放什么?
* JDK1.5以前: int, short, char, byte
* JDK1.5: 可以放枚举
* JDK1.7: 可以放 String
03_方法重载
* 概述:
* 同一个类中,
* 出现方法名相同
* 但是参数列表不同(参数个数不同,参数对应的数据类型不同)的
* 两个或以上的方法时, 称为方法重载.
* 方法重载与返回值类型无关.
方法重写
* 概述:
* 子父类间,
* 子类出现和父类一模一样的方法时,称为方法重写.
* 要求返回值类型也必须一模一样或者有子父类关系.
* 什么时候用方法重写?
* 当子类需要沿用父类的方法, 而方法主体又有自己独有需求的时候,就可以考虑使用方法重写.
04_局部变量和成员变量的区别以及对象的创建过程
* 局部变量和成员变量的区别:
* a. 定义位置不同
* 成员变量: 定义在类中, 方法外.
* 局部变量: 定义在方法中 或者 方法的声明上.
* b. 生命周期不同
* 成员变量: 随着对象的创建而存在, 随着对象的消失而消失.
* 局部变量: 随着方法的调用而存在, 随着方法的调用完毕而消失.
* c. 在内存中的存储位置不同
* 成员变量: 存在 堆中.
* 局部变量: 存在 栈中.
* d. 初始化值不同
* 成员变量: 有默认初始化值. 比如说: String类型的默认值是null, int类型的默认值是:0
* 局部变量: 没有默认初始化值,想使用必须先声明,再赋值,然后才能使用.
05_ Properties 集合类
Properties集合是一个双列集合, 键值都是String类型. 它表示了一个持久的属性集
跟io流处理配置文件
Properties prop = new Properties();
// 获取配置文件里面的数据
prop.load(new FileInputStream("config.properties"));
// 修改config.properties里面的数据
prop.setProperty("name", "wangwu");
// 保存数据
prop.store(new FileOutputStream("config.properties"),"itheima");
System.out.println(prop);
// 遍历Properties对象
// Enumeration en = prop.propertyNames();
// while(en.hasMoreElements()) {
// String key = (String)en.nextElement();
// String value = prop.getProperty(key);
// System.out.println(key+"..."+value);
// }
// System.out.println(prop);
06_对象流进行IO流的对象读写
对象流的作用就是对象从内存写到文件中,或者将文件读取到内存中,这个过程叫序列化(写出),写出就是反序列化(读取)
ObjectInputStream
ObjectOutputStream
Person p = new Person();
p.name = "jack";
p.age = 19;
// p.show();
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("a.txt"));
Object obj = ois.readObject();
Person p2 = (Person)obj;//p2 存储的是a.txt文件中存储的对象
p2.show();// jack...19
ois.close();
// // 创建一个对象输出流
// ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("a.txt"));
// // 写入数据
// oos.writeObject(p);
// // 关闭流
// oos.close();
System.out.println("搞定");
07__内存输出流
* 需求:
* 调用read(byte[] bys)方法, 将a.txt中的"你好你好"内容读取出来, 并打印到控制台上.
* 要求: 数组的长度定义为: 5.
ByteArrayOutputStream
内存输出流:
// 把整个内存当成一个缓冲区,可以往里面存储数据,然后可以从内存中一次性获取所有的数据
// 内存输出流是没有关联文件的,所以不需要关闭流进行释放资源
// 1.创建字节输入流对象
FileInputStream fis = new FileInputStream("a.txt");
// 2.内存输出流对象
ByteArrayOutputStream bos = new ByteArrayOutputStream();
// 2.定义一个字节数组,用来存储读取到的字节数组数据
byte[] bys = new byte[5];
// 定义一个变量.用来存储读取到的有效字节数
int len = 0;
//3.循环读取数据
while((len = fis.read(bys)) != -1) {
// 打印到控制台
bos.write(bys, 0, len);
// System.out.println(new String(bys, 0, len));
}
// 从内存中一次性获取所有的数据
System.out.println(bos.toString());
// 关闭流
fis.close();
System.out.println("搞定");
08_ StringBuilder 和 StringBuffer 的反转字符串和拼接字符串的方法