数组等java基础

数组的创建:①int[] arr=new int[10]; ②int[] arr={1}; ③int[] arr=new int[]{1,2,3};

格式化输出:

String str=“Java”;
double pi=3.14;
int i=100;
System.out.printf("%f\n",pi);//“f"表示格式化输出浮点数
System.out.printf(”%d\n",i);//“d"表示格式化输出十进制整数
System.out.printf(”%o\n",i);//“o"表示格式化输出八进制整数
System.out.printf(”%x\n",i);//“x"表示格式化输出十六进制整数
System.out.printf(”%s\n",str);//“s"表示格式化输出字符串

System.out.format()
String str=“Java”;
double pi=3.14;
int i=100;
//”%“表示进行格式化输出,其后是格式的定义
System.out.format(”%f\n",pi);//“f"表示格式化输出浮点数
System.out.format(”%d\n",i);//“d"表示格式化输出十进制整数
System.out.format(”%o\n",i);//“o"表示格式化输出八进制整数
System.out.format(”%x\n",i);//“x"表示格式化输出十六进制整数
System.out.format(”%s\n",str);//“s"表示格式化输出字符串
System.out.format(“一个字符串:%s,一个浮点数:%f,一个整数:%d”,str,pi,i);//可以一次输出多个变量,注意顺序即可

Fomatter类
Java中所有的格式化功能都由java.util.Formatter类处理。当你创建一个Formatter对象时 ,需要向其构造器传递一些信息,告诉它最终的结果将向哪里输出。(调用Formatter对象的format方法进行输出,输出格式同②)

String.format()
String.format()是一个static方法,接收与Formatter.format()一样的参数,其返回值:String对象,适用于一次输出。
如:
int i=10;
System.out.println(String.format(”%d",i));//"d"表示格式化输出十进制整数

输入与输出
接受输入:
Scanner scan=new Scanner(System.in);
接受输出:
如int num=scan.nextInt();

java语句块:块(即复合语句)是指由一对大括号括起来的若干条简单的 Java 语句。块确定了变量的作

用域。一个块可以嵌套在另一个块中。常见有
1.普通代码块:类中方法的方法体
2.构造代码块:构造块会在创建对象时被调用,每次创建时都会被调用,优先于类构造函数执行。
3.静态代码块:用static{}包裹起来的代码片段,只会执行一次。静态代码块优先于构造块执行。
4.同步代码块:使用synchronized(){}包裹起来的代码块,在多线程环境下,对共享数据的读写操作是需要互斥进行的,否则会导致数 据的不一致性。同步代码块需要写在方法中。

条件语句:if
循环语句:for,while,switch(注意break和default)

switch击穿:如果switch的case中不包含break,则即使运行了某个case中的代码,仍会检测其他case并一直运行到最后。

break与continue
break可以打断一层循环,但是不能打断外层循环,不能打断多层循环光~亦可 14:46:12continue打断此次循环,直接进入下次循环

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

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

使用静态的 valueOf方法可以将普通的数值转换为大数值:

Biglnteger a = Biglnteger.valueOf(100);

遗憾的是,不能使用人们熟悉的算术运算符(如:+ 和 *) 处理大数值。 而需要使用大数

值类中的 add 和 multiply 方法。

数组
数组是引用类型,不基本类型
数组为什么从0开始:如果数组从1开始计算,那么获取数组的第一个元素表达方式就是array[1]
但是数组的第一个元素的地址就是array,CPU每次获取元素需要减去1。
即必须这样做:*(array + 1 - 1)
其中+1操作是数组的下标,-1操作是为了获得正确的元素地址。
如果数组从1开始,会多了减1这个操作,增加了CPU的运算,浪费CPU资源。

引用类型的=相当于换指向

foreach循环
for (int element : a)

System.out.println(element):

打印数组 a 的每一个元素,一个元素占一行。

二维数组

int【3】【2】:3个一维数组,每个一维数组的大小为2

二维数组换一个一维数组:一开始二维数组arr的地址为245,其表示的三个一维数组的地址分别是32,54,76,代表的数组的值分别是aaa,ddd,ggg,现在要将第一个一维数组换成地址为66,内容为YYYY的数组,将第一个一维数组的指针指向地址66,回收原来的32,aaa,如图

深拷贝和浅拷贝
浅拷贝可以使用列表自带的copy()函数(如list.copy()),或者使用copy模块的copy()函数。深拷贝只能使用copy模块的deepcopy(),所以使用前要导入:from copy import deepcopy
如果拷贝的对象里的元素只有值,没有引用,那浅拷贝和深拷贝没有差别,都会将原有对象复制一份,产生一个新对象,对新对象里的值进行修改不会影响原有对象,新对象和原对象完全分离开。
如果拷贝的对象里的元素包含引用(像一个列表里储存着另一个列表,存的就是另一个列表的引用),那浅拷贝和深拷贝是不同的,浅拷贝虽然将原有对象复制一份,但是依然保存的是引用,所以对新对象里的引用里的值进行修改,依然会改变原对象里的列表的值,新对象和原对象完全分离开并没有完全分离开。而深拷贝则不同,它会将原对象里的引用也新创建一个,即新建一个列表,然后放的是新列表的引用,这样就可以将新对象和原对象完全分离开。

随机数
生成随机数要使用Math类下的方法:random()  方法的返回值是[0.0 - 1.0)

上一篇:Python基础


下一篇:moment.js插件库