软件构造:Lab1总结

 

目录

    在做Lab1时遇到了一些Java基本操作的问题,现在记录下来,以备以后查阅。

1.文件读取

1.1使用缓冲流+字符流+文件字节流读取(读字符)

1.2使用缓冲流+文件字符流读取(读字符)

1.3使用缓冲流+文件字节流读取文件(读字节)

1.4直接使用文件字节流读取文件(读字节)

2.JAVA变量

2.1局部变量

2.2实例变量

2.3类变量

3.正则表达式


    在做Lab1时遇到了一些Java基本操作的问题,现在记录下来,以备以后查阅。

1.文件读取

文件读取大体上分为两种方式,一种是按照字节读取文件,一种是按照字符读取文件。

按照字节读取的文件,除非内容是单字节的,否则读取出来的内容不是直观的,这中读取方式适合读取图像文件,视频文件等。

按照字符读取文件要求读取出来的内容是直观的,这种读取方式适合读取文本文件等。

1.1使用缓冲流+字符流+文件字节流读取(读字符)

FileInputStream按照字节读取文件

InputStreamReader将字节内容转换成字符

BufferedReader提高了读取的效率

这种方式适合读取文本文件等内容直观的文件

 public void read(String filename) throws IOException {
	BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(filename)));
     String  line = null;
     while((line=in.readLine())!=null)
    	{
    		System.out.println(line);
    	}
    	in.close();
}

1.2使用缓冲流+文件字符流读取(读字符)

FileReader是文件字符流,按照字符读取文件;

BufferedReader提高了文件读取的效率

这种方式适合读取文本文件等内容直观的文件

 public void read(String filename) throws IOException {
     BufferedReader in = new BufferedReader(new FileReader(filename));
     String  line = null;
     while((line=in.readLine())!=null)
    	{
    		System.out.println(line);
    	}
    	in.close();
}

1.3使用缓冲流+文件字节流读取文件(读字节)

FileInputStream按照字节读取文件

BufferedInputStream带缓冲的输入流,提高读取效率

	public void read(String filename) throws IOException {
		BufferedInputStream in = new BufferedInputStream(new FileInputStream(filename));
		int i;

		while ((i = in.read()) != -1) {
			System.out.print(i);
		}
		in.close();
	}

1.4直接使用文件字节流读取文件(读字节)

 public static void read(String filename) throws IOException {
	        File file = new File(filename);
	        InputStream in = null;
	            in = new FileInputStream(file);
	            int tempbyte;
	            while ((tempbyte = in.read()) != -1) {
	                System.out.write(tempbyte);
	            }
	            in.close();
	}

2.JAVA变量

参考:Java 变量类型 | 菜鸟教程 (runoob.com)

Java变量共有三种类型:

  • 类变量:独立于方法之外的变量,用 static 修饰。
  • 实例变量:独立于方法之外的变量,不过没有 static 修饰。
  • 局部变量:类的方法中的变量。

2.1局部变量

  • 局部变量声明在方法、构造方法或者语句块中;
  • 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
  • 访问修饰符不能用于局部变量;
  • 局部变量只在声明它的方法、构造方法或者语句块中可见;
  • 局部变量是在栈上分配的。
  • 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。

2.2实例变量

  • 实例变量声明在一个类中,但在方法、构造方法和语句块之外;
  • 当一个对象被实例化之后,每个实例变量的值就跟着确定;
  • 实例变量在对象创建的时候创建,在对象被销毁的时候销毁;
  • 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
  • 实例变量可以声明在使用前或者使用后;
  • 访问修饰符可以修饰实例变量;
  • 实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;
  • 实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
  • 实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。

2.3类变量

  • 类变量也称为静态变量,在类中以 static 关键字声明,但必须在方法之外。
  • 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
  • 静态变量除了被声明为常量外很少使用,静态变量是指声明为 public/private,final 和 static 类型的变量。静态变量初始化后不可改变。
  • 静态变量储存在静态存储区。经常被声明为常量,很少单独使用 static 声明变量。
  • 静态变量在第一次被访问时创建,在程序结束时销毁。
  • 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为 public 类型。
  • 默认值和实例变量相似。数值型变量默认值是 0,布尔型默认值是 false,引用类型默认值是 null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
  • 静态变量可以通过:ClassName.VariableName的方式访问。
  • 类变量被声明为 public static final 类型时,类变量名称一般建议使用大写字母。如果静态变量不是 public 和 final 类型,其命名方式与实例变量以及局部变量的命名方式一致。

3.正则表达式

      在实验中遇到了怎样判别txt文件中的数字不是通过制表符‘\t'分隔开的。数字不是制表符分隔开,则其分隔符类型不知道,直接查找文本中的内容,寻找制表符之外的分隔符显然很难实现。所以想到了Java语言的正则表达式,对字符串的内容进行模式匹配,来判断文本中是否有除了制表符之外的其他分隔符。

	String rxp = "[^0123456789.-]";
			Pattern r = Pattern.compile(rxp);
    ...
    Matcher m = r.matcher(nums[i]);
				if (m.find() == true) {
					System.out.println("矩阵元素不是用制表符分隔开!");
					return false;
				}

       这里使用了正则表达式[^0123456789.-],这是表示匹配0-9.-之外的符号,如果匹配到其他符号,则说明分隔符不仅仅是制表符,还有其他的符号。

正则表达式的用法参考:Java 正则表达式 | 菜鸟教程 (runoob.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值