Java中的输入输出、控制流程、大数值以及数组

首先介绍一下有关Stringbuilder和Stringbuffer的一些知识点:

Stringbuilder和Stringbuffer原理相同,是多线程下的安全版本,后者因为加锁了稍微慢于前者一点,但是这两者字符拼接速度都远远大于string类型。

(大量拼接)StringBuilder 事先申请足够大的数组,不需要每次循环都申请空间,少了很多申请和销毁空间的无用功,所以速度快,StringBuffer 跟上述原理一样,只不过加了锁,比上述稍微慢一点点。

string每次值发生变化都会申请空间,所以string类运行比较慢。

(少量拼接)用字符串(String)拼接。

通常Stringbuffer用法是Stringbuffer1.append(Stringbuffer2)表示两个相加,而a.append(i+),指的是a=a+i。

凡是类名带buffer的--->内部实现都是基本类型数组。

操作系统读写某个数据时要先找到其地址。

存储单元越大,读取速度越快,但是空间浪费越严重;越小,读取速率越慢,但是空间利用率越高。我们一般系统内存和磁盘的存储单元是4kb,其中磁盘的可以修改的。

为什么内存小,磁盘大,但是都设置4kb呢?内存注重性能(速度),磁盘注重存储。

一个存储单元至少消耗4kb。存储一般采用数组节省内存空间。

偏移地址的意义就是,某个存储单元的地址是基地址,偏移地址类似于“门牌号”,方便找到存储单元内的某个位置。有效地址=基地址+偏移地址

输入输出:

要想通过控制台进行输人,首先需要构造一个 Scanner 对象,并与“ 标准输人流” System.in 关联。

Scanner in = new Scanner(System.in);

运用.nextInt 读取整数

int a = in.nextlnt();

 运用.nextLine读取一行字符串(可以包含空格)

String a = in.nextLine();

 同理,要想读取下一个浮点数, 就调用 nextDouble 方法。

double a = in.nextdouble();

注意,调用这些方法要记得在程序最开始添上一行

import java.util.*;

 直接将x输出到控制台上

System.out.print(a);

 格式化输出:用对应格式来替换%字符。

System.out.printf("Hello, %s. Next year, you'll be %d", name, age);

 获取当前执行文件的路径并输出:

import java.util;
public class Test{
    public static void main(String[] aaa){
         String dir = System.getProperty("user.dir");
         System.out.println(dir);
         }
}

 记事本原理:(有个头部,用来辨别编码格式,之后进行定长读取)读取之后与事先有的形成库进行对比,相应的编码对应相应的符号,显示到记事本上。

(知识扩展)word文档中同一个字的不同字体,也对应不同的编码(自定义编码),用别的文档打开可能会乱码。常用字体的常用字号会设置相应的编码值(用的频率非常高,用编码速度快),不常用的字号不设置编码(按比例缩小,速度比较慢)部分英文字体共用一套编码。

控制流程:

块(即复合语句)是指由一对大括号括起来的若干条简单的 Java 语句。

熟知各种语句:if语句,while循环语句,for循环语句,swich多重选择语句。

介绍一下foreach语句:

用foreach遍历一维数组:

int[] a = new int[3];
for(int d:a)
   System.out.println(d);

for each遍历二维数组:

int[][] n = new int[3][4];
for(int[] d:n){
    for(int[] e:d)
         System.out.println(e);
}

要想快速地打印一个二维数组的数据元素列表, 可以调System.out.println(Arrays.deepToString(a));输出格式为: [[16, 3, 2, 13], [5, 10, 11, 8], [9, 6, 7, 12], [4, 15, 14, 1]]

如果是有规律的计算,要套用公式,千万不要盲目用for循环。

switch击穿:假如swich中有若干个case选项,swich(1),匹配到case1,但是case1里面没有break,swich就会接着向下匹配,一直到有break为止,这就是swich击穿。

swich可选中的类型:•类型为 char、byte、 short 或 int 的常量表达式。

                                   •枚举常量。

                                   •从 Java SE 7开始, case 标签还可以是字符串字面量(就是字符串)。

 break只能打断一层循环,不能打断多层。continue是打断当前循环直接进行下一次循环。

 大数值:

如果基本的整数和浮点数精度不能够满足需求, 那么可以使用java.math 包中的两个

很有用的类:Biglnteger 和 BigDecimaL 这两个类可以处理包含任意长度数字序列的数值。

Biglnteger 类实现了任意精度的整数运算, BigDecimal 实现了任意精度的浮点数运算。

使用静态的 valueOf方法可以将普通的数值转换为大数值:Biglnteger a = Biglnteger.valueOf(100);

不能使用人们熟悉的算术运算符(如:+ 和 *) 处理大数值。 而需要使用大数
值类中的 add 和 multiply 方法。

Biglnteger c = a.add(b); // c = a + b
Biglnteger d = c.nul tipi y(b.add(Biglnteger.val ueOf(2))); // d = c * (b + 2) 

数组:

一维数组的命名方式:

int[] a = {1,2,3,4,5}
int[] a = new int[]{1,2,3,4,5}

二维数组:

int[][] a = new int[3][5];

 

int[][] b = {
    {0,0,0,0,0},
    {0,0,0,0,0},
    {0,0,0,0,0}
};

三维数组:

 

int[][][] c = new int[3][4][5];

 

int[][][] d = {
    {{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}},
    {{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}},
    {{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}}
};

数组排列:Arrays.sort(a),将数组a内的数字进行顺序排序。


int[] a ={4,45,7,3,2,9,65,354};
	Arrays.sort(a);
	for(int b:a ){
		System.out.println(b);}

 输出结果为: 2  3  4  7  9  45  65  354

补充知识点:引用类型里的等于号,相当于把自己的指向换掉,指向新地址新内容,而原本指向的数据会被释放掉。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值