String、StringBuffer、StringBuilder、switch

Class1:

String、StringBuffer、StringBuilder的内部原理:
计算机在读取任何数据时,都要先把指定地址发送过去,才能进行读取操作。
1字节是默认的存储单元,每次指令的传输是15-20ns,单个存储单元越大,读取速度越快,空间浪费越严重。
内存和磁盘的存储单元是4KB称为一页,磁盘侧重于存储,硬盘侧重于速度。
由于操作系统的特性,一个变量消耗的空间至少为4KB,而一个数组消耗的空间也为4KB。
字符串类型会根据需要的空间来申请,不会申请更大的空间
StringBuilder与StringBuffer会直接申请一个足够大的数组,当空间不足时会不断将空间大小x2直到空间足够为止
故在字符串拼接的循环中,StringBuilder与StringBuffer并不会重复的申请空间,而是直接将所需要拼接的字符串加入到剩余的空间中,对空间的消耗较小,效率高而字符串类型会不断的申请新的空间来存储字符串,效率差

例如:

String aaa = '01234'; 	// char[] arr = new char[5];

而StringBuffer // char[] arr = new char[4096];
输入输出:
Scanner位于java.util下
使用方式:

Scanner in = new Scanner ( System . in );
int a = in.nextInt();

实例:

import java.util.*;
public class Test3{
				public static void main(String[] args){
					Scanner in = new Scanner(System.in);
					System.out.println("What is your name?");
					String name = in.nextLine();
					System.out.println("How old are you?");
					int age = in.nextInt();
					System.out.println("Hello," + name + ".Next year,you will be" + (age + 1));
	}
}

格式化输出:
指定格式输出
实例1:

public class Test4{
	public static void main(String[] args){
		String xx = String.format("===%s==%d%s===","大家好",23,"&&");
		System.out.println(xx);
	}
}

文件输入输出:

String dir = System.getProperty("user.dir ");	//获取当前代码所在文件的路径

记事本的显示原理:
计算机中事先存在比特点对应的编码库,打字时计算机读取所打内容对应的编码,显示内容时相当于每次读固定的编码长度并根据编码类型进行匹配,随后显示在屏幕上。(前几位表示编码类型,后几位根据相应编码类型的编码值匹配形状库)
Word文档的显示原理:
Word中的每一个字符都预先有了编码,其常用字号以及每种字体都有编码,显示的过程中会等长读取每次输入内容的编码,与形状库进行匹配并显示对应的内容,对于不常用的字号会进行比例缩放进行显示,图片传入的是一整个形状库,直接显示整个形状库即可。

Class2:

多重选择,switch语句:
switch击穿:
如果case中没有break,会一直向下匹配直到遇到一个case其中包含了break
switch语句实例:

public class Test7{
public static void main(String[] args){
					int a = 10;
					int b = 9;
					int c = 20;
					String d = "小明";
					switch(c){
						case 10:
							System.out.println("你是最棒的,抽中10元,花费10元");
							break;
						case 20:
							System.out.println("你是最棒的,抽中10元,花费10元");
							break;
						case 50:
							System.out.println("你是最棒的,抽中10元,花费10元");
							break;
						default:
								System.out.println("你是最棒的,啥都没有,花费10元");
							break;
					}
	     }
}

switch可选类型:
在这里插入图片描述

大数值:
解决了基本类型超出范围的问题BigIneger、BigDecimal的精度不会丢失
BigInteger:所有的整数
BigDecimal:所有的小数
实例:

import java.util.*;
import java.math.*;


public class Test8{
				public static void main(String[] args){
					Scanner in = new Scanner(System.in);
					System.out.println("How many numbers do you want to draw?");
					int k = in.nextInt();
					System.out.println("What is the highest number you can draw?");
					int n = in.nextInt();
					BigInteger lotteryOdds = BigInteger.valueOf(1);
					for(int i = 1;i <= k;i++){
						lotteryOdds = lotteryOdds.multiply(BigInteger.valueOf(n - i + 1)).divide(BigInteger.valueOf(i));
					}
					System.out.println("your odds are 1 in "+lotteryOdds+". Good luck!");
				}
}

数组:
int[] a = new int[10]; //生成的并不是一个空数组,默认值是0
多维数组:
建立与赋值实例:
在这里插入图片描述

非引用类型的句柄和值在同一个内存地址下,引用类型的"="相当于把指向位置换掉
数组的第一个元素的地址与数组的地址相同
二维数组结构如下:
在这里插入图片描述

C++中的指针和JAVA(所有涉及引用类型的语言)中的引用类型一样,在句柄=值中,都是改变自己的指向
如下图为将a[0]由"aaa"更替为"yyyyy"的过程
在这里插入图片描述

数组排序的封装方法:

Arrays.sort(arr);		//将arr按升序排列
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值