zoukankan      html  css  js  c++  java
  • 2018年4月4日JAVA

    一.java八大基本类型:

    整型:

    byte:

    • byte数据类型是8位、有符号的,以二进制补码表示的整数;
    • 最小值是-128(-2^7);
    • 最大值是127(2^7-1);
    • 默认值是0;
    • byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一;
    • 例子:byte a = 100,byte b = -50。

    short:

    • short数据类型是16位、有符号的以二进制补码表示的整数
    • 最小值是-32768(-2^15);
    • 最大值是32767(2^15 - 1);
    • Short数据类型也可以像byte那样节省空间。一个short变量是int型变量所占空间的二分之一;
    • 默认值是0;
    • 例子:short s = 1000,short r = -20000。

    int:

    • int数据类型是32位、有符号的以二进制补码表示的整数;
    • 最小值是-2,147,483,648(-2^31);
    • 最大值是2,147,483,647(2^31 - 1);
    • 一般地整型变量默认为int类型;
    • 默认值是0;
    • 例子:int a = 100000, int b = -200000。

    long:

    • long数据类型是64位、有符号的以二进制补码表示的整数;
    • 最小值是-9,223,372,036,854,775,808(-2^63);
    • 最大值是9,223,372,036,854,775,807(2^63 -1);
    • 这种类型主要使用在需要比较大整数的系统上;
    • 默认值是0L;
    • 后面加L或者l,就表示是long长整型;
    • 例子: long a = 100000L,Long b = -200000L。

    浮点型:

    float:

    • float数据类型是单精度、32位、符合IEEE 754标准的浮点数;
    • float在储存大型浮点数组的时候可节省内存空间;
    • 默认值是0.0f;
    • 后面加F或者f,表示float类型;
    • 浮点数不能用来表示精确的值,如货币;
    • 例子:float f1 = 234.5f。

    double:

    • double数据类型是双精度、64位、符合IEEE 754标准的浮点数;
    • 浮点数的默认类型为double类型;
    • double类型同样不能表示精确的值,如货币;
    • 默认值是0.0d;
    • 后面加D或者d,表示double类型;
    • 例子:double d1 = 123.4。

    布尔型:

    boolean:

    • boolean数据类型表示一位的信息;
    • 只有两个取值:true和false;
    • 这种类型只作为一种标志来记录true/false情况;
    • 默认值是false;
    • 例子:boolean one = true。

    字符型:

    char:

    • char类型是一个单一的16位Unicode字符;
    • 最小值是’u0000’(即为0);
    • 最大值是’uffff’(即为65,535);
    • char数据类型可以储存任何字符;
    • 例子:char letter = ‘A’。

    注意:String不是基本类型。

    基本类型的包装类

          Integer 、Long、Short、Byte、Character、Double、Float、Boolean、BigInteger、BigDecmail

    其中BigInteger、BigDecimal没有相对应的基本类型,主要应用于高精度的运算,BigInteger 支持任意精度的整数,

    BigDecimal支持任意精度带小数点的运算

    基本类型与包装类型的:

            在Java是面向对象编程,但八大基本类型却不是对象。所以八大基本类型都有对应的包装类型。

    J2SE5.0后提供了自动装箱与拆箱的功能,所以需要通过包装类来转换。比如:我们可以把int型包装成Integer 类的对象。

     为什么要提供包装类呢? 是为了在各种类型间转化,通过各种方法的调用。否则你无法直接通过变量转化

    二.array类
    1. 声明数组;
    2. 初始化数组;
    3. 查看数组长度;
    4. 遍历数组;
    5. int数组转成string数组;
    6. 从array中创建arraylist;
    7. 数组中是否包含某一个值;
    8. 将数组转成set集合;
    9. 将数组转成list集合;
    10. Arrays.fill()填充数组;
    11. 数组排序;
    12. 复制数组;
    13. 比较两个数组;
    14. 去重复;
    15. 查询数组中的最大值和最小值;

    备注:文内代码具有关联性。

    1.声明数组;

    String [] arr;
    int arr1[];
    String[] array=new String[5];
    int score[]=new int[3];
    2.初始化数组;
     
    //静态初始化
    int arr2[]=new int[]{1,2,3,4,5};
    String[] array1={"马超","马云","关羽","刘备","张飞"};
    String[] array2=new String[]{"黄渤","张艺兴","孙红雷","小猪","牙哥","黄磊"};
    int score[]=new int[3];
    //动态初始化
    for(int i=0;i<score.length;i++)
    {   
      score[i]=i+1; 
    }

    3.查看数组长度;

    int length=array1.length;
    System.out.println("length:  "+array1.length)

    4.遍历数组;

    for (int i = 0; i < array1.length; i++) {
        System.out.println(array1[i]);
    }

    5.int数组转成string数组;

    int[]  array3={1,2,3,4,5,6,7,8,9,0};
            String arrStrings=Arrays.toString(array3);
            System.out.println(arrStrings);

     6.从array中创建arraylist;

    ArrayList<String> arrayList=new ArrayList<String>(Arrays.asList(array1));
    System.out.println(arrayList);

    7.数组中是否包含某一个值;

    String a="马超";
    String[] array1={"马超","马云","关羽","刘备","张飞"};
    if (Arrays.asList(array1).contains(a)) {
        System.out.println("马超在这里");
    }

    8.将数组转成set集合;

    String[] array2=new String[]{"黄渤","张艺兴","孙红雷","小猪","牙哥","黄磊"};
        Set<String> set=new HashSet<String>(Arrays.asList(array2));
        System.out.println(set);

    9.将数组转成list集合;

    String[] array2=new String[]{"黄渤","张艺兴","孙红雷","小猪","牙哥","黄磊"};
    //方法 1.
    List<String> list=new ArrayList<String>();
    for (int i = 0; i < array2.length; i++) {
        list.add(array2[i]);
    }
     
    String[] arrStrings2={"1","2","3"};
    //方法 2.
    List<String > list2=java.util.Arrays.asList(arrStrings2);
    System.out.println(list2);

    10.Arrays.fill()填充数组;

    int[] arr3=new int[5];
            Arrays.fill(arr3, 10);  //将数组全部填充10
                   //遍历输出
            for (int i = 0; i < arr3.length; i++) {
                System.out.println(arr3[i]);
            }

    11.数组排序;

    //方法 1.
    int[] arr4 = {3, 7, 2, 1, 9};
    Arrays.sort(arr4);         //.sort(int[] a)   放入数组名字
    for (int i = 0; i < arr4.length; i++) {
        System.out.println(arr4[i]);
    }
    //方法 2.        
    int[] arr5 = {3, 7, 2, 1, 9,3,45,7,8,8,3,2,65,34,5};
    Arrays.sort(arr5, 1, 4);  //.sort(a, fromIndex, toIndex)    从第几个到第几个之间的进行排序
    for (int i = 0; i < arr5.length; i++) {
            System.out.println(arr5[i]);
    }

    12.复制数组;

    //方法 1.
    int[] arr6 = {3, 7, 2, 1};
    int[] arr7=Arrays.copyOf(arr6, 10);  //指定新数组的长度
    //方法 2.        
    int[] arr8=Arrays.copyOfRange(arr6, 1, 3); //只复制从索引[1]到索引[3]之间的元素(不包括索引[3]的元素)
    for (int i = 0; i < arr8.length; i++) {
            System.out.println(arr8[i]);
    }

    13.比较两个数组;

    int[] arr9 = {1, 2, 3, 4,5,6,7,8,9,0};
            boolean arr10=Arrays.equals(arr6, arr9);
            System.out.println(arr10);

    14.去重复;

    int[] arr11 = {1, 2, 3, 4,5,6,7,8,9,0,3,2,4,5,6,7,4,32,2,1,1,4,6,3};
    //利用set的特性
    Set<Integer> set2=new HashSet<Integer>();
    for (int i = 0; i < arr11.length; i++) {
        set2.add(arr11[i]);
    }
    System.out.println(set2);
    int[] arr12 = new int[set2.size()];
    int j=0;
    for (Integer i:set2) {
        arr12[j++]=i;
    }
    System.out.println(Arrays.toString(arr12));

    15.查询数组中的最大值和最小值;

    int[] arr11 = {10, 2, 3, 4,5,6,7,8,9,0,3,2,4,5,6,7,4,32,2,1,1,4,6,3};
     //计算最大值
    int max = arr11[0];
    for (int i = 1; i < arr11.length; i++) {
         if (arr11[i] > max) {
             max = arr11[i];
        }
      }
      System.out.println("Max is " + max);
      //计算最小值
      int min = arr11[0];
      for (int i = 0; i < arr11.length; i++) {
        if (arr11[i]<min) {
            min = arr11[i];
        }
    }
      System.out.println("Min is " + min);

    三.大数据运算

    Java已经有BigInteger和BigDecimal俩个大数据处理类

    能加(减)乘(除) 
    理论上数据大小由堆中可开辟内存大小决定

    import java.util.ArrayList;
    
    import java.util.List;
    import java.util.Scanner;
    
    
    
    public class Tmep {
    
        public static void main(String[] args) {
            Except except = new Except();
            except.set();
    
            except.productList();
            except.getLr();
    
        }
    
    }
    class Except{
        private List<Short> l1 ;
        private List<Short> l2 ;
        private List<Short> lx ;
        private List<Short> lr ;
        protected Scanner input ; 
    
        public  Except() {
            l1 = new ArrayList<Short>();
            l2 = new ArrayList<Short>();
            lx = new ArrayList<Short>();
            lr = new ArrayList<Short>();
            //默认关闭状态
            /*长度指定有缺少默认值时不指定
            */
        }
    
        public void getLr() {
            for(int i = 0 ; i < lr.size() ; i++) {
                System.out.print(lr.get(i));
            }
        }
        public void set() {
            input = new Scanner(System.in);
    
            String string = input.next();
            int ch ;
            for(int i = 0 ; i < string.length() ;i++) {
                 ch = string.charAt(i) - '0';
                 //添加成功
                 l1.add(i,(short) ch);      
            }
            String str = input.next();
            for(int i = 0 ; i < str.length() ;i++) {
                 ch = str.charAt(i) - '0';
                 //添加成功
                 l2.add(i,(short) ch);      
            }
            input.close();
        }
    
    
        /**
         * 将l1和l2求和
         * 获得最快速度
         */
        public void sumList(List<Short> l1 ,List<Short> l2 ,List<Short> lr) {
            List<?> b1,b2 ;//存放b1的为最大的
            if(l1.size() < l2.size()) {
                b1 = l2;
                b2 = l1;
            }
            else {
                b1 = l1;
                b2 = l2;
                }
            Short bt1 = 0 , bt2 = 0  ,bt3 = 0 ,bt4 = 0;
    
    
            //设置lr的长度 
    
    
                int i = 0;
            for(int j = 0  ; j < b2.size() ;j++) {
                i=j;
                //小的为下部所要加的
                bt2 = (Short) b2.get(b2.size()-1 - j);
                bt4 = bt2;
                while(true) {
    
                    //大的为上部执行加减的
                    bt1 = ((Short)b1.get(b1.size()-1-i));       
                    bt3 =  (short) ((bt4+bt1) %10) ;//本位所要保留的数
                    lr.set(lr.size()-1-i, bt3);
                    bt4 = (short) ((bt4+bt1) / 10);//前进一位所获得的数字
                    if(i+1==b1.size()) {
                        //将最后一个进位放入开头
                        if(bt4!=0) {
                            lr.add(lr.size()-b1.size(), (short)bt4);
                        }
                        break;
                    }
    
                    i++;
                }
    
            }
    
        }
    
    
        public void productList() {
            List<?> b1,b2 ;//存放b1的为最大的
            if(l1.size() < l2.size()) {
                b1 = l2;
                b2 = l1;
            }
            else {
                b1 = l1;
                b2 = l2;
                }
            Short bt1 = 0 , bt2 = 0  ,bt3 = 0 ,bt4 = 0;
    
    
            //设置长度 为俩个乘积数的位数和
            for(int j = 0 ; j <b1.size()+b2.size() ; j++) {
                lr.add(j,(short) 0);
    
            }
            int  t=0;
            for(int j = 0  ; j < b2.size() ;j++) {
                t=j;
                //重置lx
                lx.clear();
                for(int p = 0 ; p<b1.size()+ b2.size() ;p++) {
                    lx.add(p,(short) 0);
                }
                //小的为下部所要乘的
                bt2 = (Short) b2.get(b2.size()-1 - j);
                bt4 = 0;
                int i = 0;
                while(true) {
    
                    //大的为上部执行乘的
                    bt1 = ((Short)b1.get(b1.size()-1-i));       
                    bt3 =  (short) ((bt4+bt1*bt2) %10) ;//本位所要保留的数
                    lx.set(lx.size()-1-t, bt3);
                    bt4 = (short) ((bt4+bt1*bt2) / 10);//前进一位所获得的数字
                    if(i+1==b1.size()) {
                        //将最后一个进位放入
                        lx.set(lx.size()-t-2, (short)bt4);
                        break;
                    }
                    t++;
                    i++;
                }
    
                //求得lx与此位数下的lr和
                this.sumList(lr, lx ,lr); 
    
        }
    }
    }
     
    
    
  • 相关阅读:
    师生关系
    2019-2020-1 20191213兰毅达《信息安全专业导论》第九周学习总结
    2019-2020 20191213 《信息安全专业导论》第八周学习总结
    2019-2020学年 20191213兰毅达《信息安全导论》第七周学习总结
    2019-2020 20191213《信息安全专业导论》第五周学习总结
    2019-2020《信息安全专业导论》第四周学习总结
    2019-2020学年 20191217《信息安全专业导论》第三周学习总结
    师生关系
    2019-2020 20191213《信息安全专业导论》第二周学习总结
    《计算机概论》速读提问
  • 原文地址:https://www.cnblogs.com/jason111/p/8747820.html
Copyright © 2011-2022 走看看