Java简介3.0

Posted 364.99°

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java简介3.0相关的知识,希望对你有一定的参考价值。


1.控制流程

1.1块(block)作用域

块(复合语句):由若干条Java语句组成的语句,并用一堆大括号括起来
                其确定了变量的作用域,且一个块能嵌套进另一个块
                不能在嵌套的两个块中声明同名变量

1.2.条件语句

1.if

单个语句:
if (condition) statement
块语句(block statement):
if(condition){
   statement1;
   statement2;
...
}

2.if else

单个语句:
if (condition) statement1 else statement2
块语句(block statement):
if(condition){
   statement1;
   statement2;
...
}
else{
   statement3;
   statement4;
}
else与最近的if构成一组

3.if elseif

if(condition){
   statement1;
   statement2;
...
}
elseif(condition2){
   statement3;
   statement4;
}
elseif(condition3){
   statement5;
   statement6;
}
else{
   statement7;
   statement8;
}

1.3.循环

注意设置循环截止条件,防止死循环
1.while

当条件为true时,while就执行一条语句(块语句)
单句循环
while (condition) statement;
块(多句)循环
while (statement){
   statement1;
   statemenr2;
...
}

2.do while

不管条件是否为true,都要先执行一次循环语句
单句循环
do statement while (condition) ;
块(多句)循环
do (statement){
   statement1;
   statemenr2;
...
}
while (condition);

3.for

for循环是支持迭代的一种通用结构,由一个计数器或类似的变量控制迭代计数,每次迭代后这个变量将会更新。
格式:
for(计数器初始化;循环条件;更新计数器){
   循环语句
}
for语句的3个部分应该对同一个计数器变量进行初始化、检测和更新

注意
在循环中,检测两个浮点数是否相等时,由于舍入的误差,可能永远达不到精确地最终值
for语句中的变量不能在循环体之外使用

4.switch

switch多重选择,switch语句将从与选项值相匹配的case标签开始执行,遇到break或执行到switch语句的结束处停止,如果没有匹配的case,就会执行default语句
switch (date){
   case date1:
   ...
   break;
   case date2:
   ...
   break;
   case date3:
   ...
   break;
   default:
   ...
   break;
}


注意:
     在case语句末尾没有break语句,将会接着执行下一个case分支语句,从而触达多个case分支

case标签范围:
     char、byte、short、int的常量表达式
     枚举常量
     字符串字面量(Java7)

1.4.中断控制流程的语句

1.continue

结束此次循环,进入下一次循环

2.break

跳出所在循环语句

3.带标签的break

标签需要放在希望跳出的最外层循环之前

public class BreakLoop {
    public static void main(String[] args) {
        loop://声明一个标签
        for (int i = 1;i < Integer.MAX_VALUE;i++){
            for (int j = 1;j < Byte.MAX_VALUE;i++){
                while (j < 10){
                    System.out.println("循环中:"+j);
                    if (j%3 == 0)
                        break loop;//当j为3的整数倍时,跳出到标签所在块
                    j++;
                }
            }
        }
    }
}

2.大数

2.1.BigInteger和BigDecimal

import java.math.*;

当基本的整数和浮点数精度不能满足需求时,可以使用java.math包中的BigIntegerBigDecimal.
BigInteger:可实现任意精度的整数运算
BigDecimal:可实现任意精度的浮点数运算
valueOf:将普通的书转换为大数(如:BigInteger b = BigInteger.valueOf(100);
对于更大的数,可以使用一个带字符串参数的构造器:BigInteger b = new BigInteger("23131456435135154186486486415131321313...");
一些大数常量:BigInteger.ZERO、BigInteger.ONE、BigInteger.TEN、BigInteger.TWO(Java9)

不能使用算术运算符(+ - 等)处理大数

2.2.API

import java.math.BigInteger;

关键字简介
BigInteger add(BigInteger other)
BigInteger substract(BigInteger other)
BigInteger multiply(BigInteger other)
BigInteger divide(BigInteger other)
BigInteger mod(BigInteger other)
返回两个大数的




余数
BigInteger sqrt()大数的平方根
BigInteger comparaTo(BigInteger other)两个大数相等,返回0
此大数更大,返回整数
此大数更小,返回负数
static BigInteger valueOf(long x)返回值等于x的大整数

import java.math.BigDecimal;

关键字简介
BigDecimal add(BigDecimal other)
BigDecimal substract(BigDecimal other)
BigDecimal multiply(BigDecimal other)
BigDecimal divide(BigDecimal other)
BigDecimal divide(BigDecimal other,RoundingMode mode)
返回此大实数与other的




如果商是无线循环小数,第一个divide会抛出异常,此时可用第二个方法RoundingMode.HALF_UP得到一个四舍五入结果
int compareTo(BigDecimal other)相等返回0
此小于other,返回负数
此大于other,返回正数
static BigDecimal valueOf(long x)
static BigDecimal valueOf(long x,int scale)
返回值等于x
或x/(10^scale)的一个大实数

3.数组

数组是一种数据结构,用来存储相同类型值的序列,通过一个整型下标/索引(index)可以访问数组中的每一个值
Java应用程序的main方法中,程序名并没有存储在args数组中

3.1.声明数组

public class Array {
    public static void main(String[] args) {
        int a[];//声明一个数组变量,并没有将a初始化为一个真正的数组
        int[] b = new int[13];//声明并初始化了一个可以存储13个整数的数组
        int [] c = {1,2,3,4,5};//创建数组对象的同时,为其赋值(简写形式)
        int[] d = new int[]{1,2,3,4,5};//创建数组对象的同时,为其赋值
    }
}

3.2.访问数组元素

数组下标是从0开始的
创建一个数字数组是,所有元素初始值为0
Boolean数组,初始值为false
对象数组(如String),初始值为null

public class Array {
    public static void main(String[] args) {
       int[] a = new int[10];
       //使用for循环给数组赋值
       for (int i=0;i < a.length;i++){
           a[i] = i;
       }
    }
}

3.3.for each循环

增强型for循环语句:for (variable : collection) statement
    其定义了一个变量用于暂存集合中的每一个元素,并执行相应的语句(语句块)。collection这一集合表达式必须是一个数组或者是一个实现了Iterable接口的类对象(如ArrayList、LinkList)

public class Array {
    public static void main(String[] args) {
       int[] a= new int[13];
       //赋值
       for (int i=0;i < a.length;i++){
           a[i] = (int)(3+Math.random()*10);//给数组a赋值3到13的随机整数
       }
       //遍历
        for (int each:a){
            System.out.print(each + " ");
        }
        System.out.println();
    }
}

3.4.Arrays

import java.util.Arrays
xxx代表数据类型

关键字简介
static String toString(xxx[ ] a)返回数组a中包含的元素的一个字符串
static xxx[ ] copyOf(xxx[ ] a,int end)
static xxx[ ]copyOfRange(xxx[ ] a,int start,int length)
复制数组a中的元素,当end>a.length时,会自动填充0
static void sort(xxx[ ] a)对数组a进行排序
static int binarySearch(xxx[ ] a,xxx v)
static int binarySearch(xxx[ ] a,int start,int end,xxx v)
使用二分法在数组a中查找值v,查找到了返回下标,否则,返回一个负数值r,-r-1是v应该插入的位置上
static void fill(xxx[ ] a,xxx v)将数组的所有元素都设为v
static boolean equals(xxx[ ] a,xxx[ ] b)两个数组大小相同,且下表相同的元素对应相同,返回true
import java.util.Arrays;

public class Array {
    public static void main(String[] args) {
       int[] a= new int[13];
       //赋值
       for (int i=0;i < a.length;i++){
           a[i] = (int)(3+Math.random()*10);//给数组a赋值3到13的随机整数
       }
       //遍历
        System.out.println("输出原数组:");
        for (int each:a){
            System.out.print(each + " ");
        }
        System.out.println();
        //复制、排序、查找、填充
        int []b = Arrays.copyOfRange(a,0,a.length);//将a的元素,复制到b中
        Arrays.sort(b);//对数组b进行排序
        System.out.println("输出排序后的数组:");
        for (int each : b){
            System.out.print(each + " ");
        }
        System.out.println();
        System.out.println("11在数组b中的位置:" + Arrays.binarySearch(b,11));//查找
        Arrays.fill(b,7);//填充7
        System.out.println("输出填充后的数组b:");
        for (int each : b){
            System.out.print(each + " ");
        }
        System.out.println();
    }
}

3.5.二维数组

Java中并没有多维数组,只有一位数组,多维数组被解释为“数组的数组”

import java.util.Arrays;

public class Array {
    public static void main(String[] args) {
       int [][] a = new int[3][4];//声明二维数组的时候,必须声明其行数
       int [][] b = {//会自动补0
               {1,2},
               {3,4,5},
               {6,7,8,9}
       };
       //给数组a赋值
        for (int i=0;i < a.length;i++){
            for (int j=0;j < a[i].length;j++){
                a[i][j] = (int)(Math.random()*100);
            }
        }
        //遍历数组b(增强for循环)
        for (int[] row : a){
            for (int value : row){
                System.out.print("\\t" + value );
            }
            System.out.println();
        }
        //遍历数组a(快速打印)
        System.out.println(Arrays.deepToString(a));
    }
}

3.6.不规则数组

创建一个三角数组

public class Array {
    public static void main(String[] args) {
        //声明常量
       final int len = 10;

       //分配三角数组
       int [][] odds = new int[len + 1][];
       for (int n=0;n <=len;n++)
           odds[n] = new int[n + 1];//每行列数递增

       //赋值
       for (int n = 0;n < odds.length;n++){
           for (int m = 0;m < odds[n].length;m++){
                 odds[n][m] = (int)(Math.random()*100);
               }
           }
       //遍历打印
        for (int []row : odds){
            for (int odd : row){
                System.out.print("\\t" + odd);
            }
            System.out.println();
        }
    }
}

以上是关于Java简介3.0的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )(代码片段

Spring Boot 3.0正式发布及新特性解读

操作栏标签片段中的片段?

Spring Boot 3.0

jsp简介

同项目支持3.0及以下版本