美文网首页
java基础知识(一)

java基础知识(一)

作者: CapybaraJ | 来源:发表于2018-07-08 22:31 被阅读0次

    重新整理java的学习的东西,感觉自己学东西太不系统了QAQ
    先列目录吧,然后再慢慢加内容

    目录


    • 基础数据类型
      • 类型范围说明
      • 基础类型包装
      • 类型转化
    • 字符串
      • String类基本操作
      • StringBuilder
      • String与其他类型的转化
    • 枚举类
    • 时间类
      • Date
      • Calendar
    • Input & Output
      • 标准输入输出
      • 文件输入输出
    • 大数运算
    • 数组
      • 泛型数组

    基础数据类型

     类型范围说明

      Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。可以参考这个文章:Java 基本数据类型,这边列表说一下

    类 型 存储 范围
    byte 1 B [-128 , 127] / [-27 , 27 - 1]
    short 2 B [-32768 , 32767] / [-215 , 215 - 1]
    int 4 B [ -2 147 483 648 , 2 147 483 647] / [-231 , 231 - 1]
    long 8 B [ -9 223 372 036 854 775 808 , -9 223 372 036 854 775 807] / [-263 , 263 - 1]
    float 4 B [ -3.402 823 47E+38F , +3.402 823 47E+38F](有效数位6~7位)
    double 8 B [ -1.797 693 134 862 315 70E+308 , +1.797 693 134 862 315 70E+308](有效数位15位)
    boolean \ true / false 两个取值
    char 2 B 单一的16位Unicode字符,最小值 \u0000(即为0),最大值是 \uffff(即为65,535);

    注:

    • long a=111111111111111111111111(错误,整数型变量默认是int型)
      long a=111111111111111111111111L(正确,强制转换)

    • 浮点数不能用来表示精确的值,如货币;
      float f=6.26 (错误 浮点数默认类型是double类型)
      float f=6.26F (转换正确,强制)
      double d=4.55 (正确)

    • 强烈建议不要在程序中使用 char 类型 , 除非确实需要处理 UTF 16 代码单元 。 最好将字符串作为抽象数据类型处理

       基础类型包装

      包装类均位于java.lang包,使用时不需要导入,系统自动导入。Java中的8个包装类分别是:Byte,Short,Integer,Long,Float,Double,Character,Boolean它们的使用方式都是一样的,可以实现原生数据类型与包装类型的双向转换。
    包装类和基本数据类型的对象关系:

    基本类型 包装器类型
    boolean Boolean
    char Character
    int Integer
    byte Byte
    short Short
    long Long
    float Float
    double Double

      对于数值类型的基本类型的取值范围,我们无需强制去记忆,因为它们的值都已经以常量的形式定义在对应的包装类中了。

    public class PrimitiveTypeTest {  
        public static void main(String[] args) {  
            // byte  
            System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);  
            System.out.println("包装类:java.lang.Byte");  
            System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);  
            System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);  
            System.out.println();  
      
            // short  
            System.out.println("基本类型:short 二进制位数:" + Short.SIZE);  
            System.out.println("包装类:java.lang.Short");  
            System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);  
            System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);  
            System.out.println();  
      
            // int  
            System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);  
            System.out.println("包装类:java.lang.Integer");  
            System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);  
            System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);  
            System.out.println();  
      
            // long  
            System.out.println("基本类型:long 二进制位数:" + Long.SIZE);  
            System.out.println("包装类:java.lang.Long");  
            System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);  
            System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);  
            System.out.println();  
      
            // float  
            System.out.println("基本类型:float 二进制位数:" + Float.SIZE);  
            System.out.println("包装类:java.lang.Float");  
            System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);  
            System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);  
            System.out.println();  
      
            // double  
            System.out.println("基本类型:double 二进制位数:" + Double.SIZE);  
            System.out.println("包装类:java.lang.Double");  
            System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);  
            System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);  
            System.out.println();  
      
            // char  
            System.out.println("基本类型:char 二进制位数:" + Character.SIZE);  
            System.out.println("包装类:java.lang.Character");  
            // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台  
            System.out.println("最小值:Character.MIN_VALUE="  
                    + (int) Character.MIN_VALUE);  
            // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台  
            System.out.println("最大值:Character.MAX_VALUE="  
                    + (int) Character.MAX_VALUE);  
        }  
    }
    

    结果可以自己跑,或者看实例结果

     类型转化

    int n = 10;
    Integer in = new Integer(100);
    //将int类型转换为Integer类型
    Integer in1 = new Integer(n);
    //将Integer类型的对象转换为int类型
    int m = in.intValue();
    //自动装箱
    //基本类型就自动地封装到与它相似类型的包装中
    Integer i = 100;
    //本质上是,编译器编译时自动添加
    Integer i = new Integer(100);
    //自动拆箱
    //包装类对象自动转换成基本数据类型。
    int a = new Integer(100);
    //本质是上,编译器编译时自动添加
    int a = new Integer(100).intValue();
    //将字符串”120”按照十进制转换为int,则结果为120
    int n = Integer.parseInt(“120”,10);
    //将字符串”12”按照十六进制转换为int,则结果为18
    int n = Integer.parseInt(“12”,16);
    //将字符串”ff”按照十六进制转换为int,则结果为255
    int n = Integer.parseInt(“ff”,16);
    

    字符串

     String类基础操作

      有很多,可以看官方API,下面列举一些常用的

    //String 类的静态方法 format() 能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。
    String fs;
    fs = String.format("浮点型变量的值为 " +
                       "%f, 整型变量的值为 " +
                       " %d, 字符串变量的值为 " +
                       " %s", floatVar, intVar, stringVar);
    
    //空串 "" 是长度为 0 的字符串
    if ( str.length() = 0)  /*or*/  if ( str.equals ("") ) /*or*/ str.isEmpty();
    //null , 要使用以下条件 
    if ( str == null )
    //检查一个字符串既不是 null 也不为空串, 这种情况下就需要使用以下条件 
    if (str != null && str.length() != 0 )
    
    //子串
    String greeting = "Hello";
    String s = greeting . substring(0,3) ; //s="Hel",从0开始,3个字符长
    
    //拼接
    String expletive = "Expletive" ; String PC13 = " deleted " ;
    String message = expletive + PC13; // message = "Expletive deleted"
    String all = String join ( " / " , " S " , " M " , " L " , " XL " ) ; 
    // all is the string " S / H / L / XL "
    //string1.concat(string2); 返回 string2 连接 string1 的新字符串
    String s = "菜鸟教程:";
    s = s.concat("www.runoob.com");
    
    //比较,不能使用“==”
    "Hello".equals ( greeting )
    //不区分大小写
    "Hello".equalsIgnoreCase ( " hello")
    
    //获取长度
    String greeting = "Hello" ;
    int n = greeting.length(); // is 5 .
    //要想得到实际的长度, 即码点数量 , 可以调用
    int cpCount = greeting codePointCount ( 0 , greeting length() ) ;
    
    //访问字符串某位置字符
    char last = greeting charAt (4) ; // last is ’ o ’,计数从0开始
    
    //查找
    int locate1 = greeting.indexOf("l"); //2
    int locate2 = greeting.indexOf("l",3) //3
    int locate3 = greeting.lastIndexOf("lo",1) // not found,因为从位置1反向查找
    //返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。
    
    

     StringBuilder

      当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
      StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
      由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
    菜鸟教程的一个例子:

    public class Test{
      public static void main(String args[]){
        StringBuffer sBuffer = new StringBuffer("菜鸟教程官网:");
        sBuffer.append("www");
        sBuffer.append(".runoob");
        sBuffer.append(".com");
        System.out.println(sBuffer);  
      }
    }
    //以上实例编译运行结果如下:
    菜鸟教程官网:www.runoob.com
    

     String与其他类型的转化

    转自这里

    public class Exchange {
        public static void main(String [] args)
        {
            //  1   String <<<----->> int             
            String str1="12";
            int i=Integer.parseInt(str1);         ///  String--->int ; String转其他(float double)类似
            int j=Integer.valueOf(str1).intValue();     ///  String--->int ;  
            
            str1=i+"";                           ///   int ----->String   会产生两个String对象
            str1=String.valueOf(i);             ///   int ----->Strng    只有一个String对象
            str1= Integer.toString(i);          ///  int ----->String    
     
     
            //   2   Stirng  <<<------>>>  char[]     
            String str2 = "ABCD";
            char[] bm = str2.toCharArray();         ///   String----->char[]
            str2 = String.valueOf(bm);           ///    char[]----->String
     
            //   3  Stirng   <<<------->>>  char
            String str3="0123";
            char ch0,ch1;
            ch0=str3.charAt(0);               /// String -->>>char    参数给的是 下标。
            ch1=str3.charAt(1);
     
            char ch2='A';
            str3=ch2+"";                       /// 可以加个空的字符串,将char 转化为 String型
     
            
            //   4  int  <<<------->>>  char[]     
            //   int-->char[]       1.首先要将int 转化为String <采用上面的方法>
            //                      2.然后将String 类型转化为char[]
            //   char[]-->int    与上面步骤相反,先将char[] 转化为 String ,再将String转化为int。
     
     
            //    5  int     <<<------>>> char   比如 '9'   <-->   9
            int k=1;
            char chk=k+48;                        // int -->char  char 型的数字的 ASCII码比这真正的数字(0-9)大48
     
            k=Character.getNumericValue(chk);     // char-->int  静态函数。
            k=chk-48;                             // char -->int   
     
            //  6  char []   <<<---->>>  char     
              char [] ch6={'A','B'};
              char   ch;
              ch=ch6[1];                          //  char [] --->ch  直接赋值
     
              char [] ch7={ch};                //   ch-----> char[]
        }
    }
    

    枚举类

    参考自Java 枚举(enum) 详解7种常见的用法,只摘录了两种常见用法,除非我自己遇到,不然不会添加我觉得很稀奇的用法。

    //定义
    public enum Color {  
      RED, GREEN, BLANK, YELLOW  
    }
    //如果打算自定义自己的方法,
    //那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例。 
    public enum Color {  
        RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);  
        // 成员变量  
        private String name;  
        private int index;  
        // 构造方法  
        private Color(String name, int index) {  
            this.name = name;  
            this.index = index;  
        }  
        // 普通方法  
        public static String getName(int index) {  
            for (Color c : Color.values()) {  
                if (c.getIndex() == index) {  
                    return c.name;  
                }  
            }  
            return null;  
        }  
        // get set 方法  
        public String getName() {  
            return name;  
        }  
        public void setName(String name) {  
            this.name = name;  
        }  
        public int getIndex() {  
            return index;  
        }  
        public void setIndex(int index) {  
            this.index = index;  
        }  
    }  
    

    时间类

     Date

     Calendar

    Input & Output

     标准输入输出

    Scanner xx = new Scanner( System.in );
    System.out.print("enter a number: "); //println换行;print不换行
    int number = xx.nextInt();//数据类型为int
    /*
    nextByte(); 读取一个byte类型的整数。
    nextShort(); 读取一个short类型的整数。
    nextInt(); 读取一个int类型的整数。
    nextLong(); 读取一个long类型的整数。
    nextFloat(); 读取一个float类型的整数。
    nextDouble(); 读取一个double类型的整数。
    next(); 读取一个字符串,该字符在一个空白符之前结束。
    nextLine(); 读取一行文本(即以按下enter键为结束标志)。
    可用hasNextXXX()来判断是否有下个输入
    */
    
    System.out.printf ("Hello, %s. Next year , you ' ll be %d " , name , age) ;
    
    

     文件输入输出

      见参考链接,有时间再转载和添加样例代码
      https://blog.csdn.net/xuehyunyu/article/details/77873420
      https://www.cnblogs.com/longronglang/p/7458027.html

    大数运算

     数组

     泛型数组

    相关文章

      网友评论

          本文标题:java基础知识(一)

          本文链接:https://www.haomeiwen.com/subject/nfctuftx.html