Java基础知识(一)

2020-04-14  本文已影响0人  en_young

1、Java中从键盘读取输入,输入都看成是字符串;

      利用类Scanner的方法next()就能获取输入的内容(不管输入什么),而nextInt()方法用来获得输入是整数的,其间,是将输入的字符串内容转成了int才输出的;

2、Java中如何导包:

      import 包路径.类名称;

      只有Java.lang包下的内容不需要导包;

      如果要使用的类和当前的类在同一个包下,则不需要导入包;

3、匿名对象(参考匿名函数)

      匿名对象:就是只有右边的对象,没有左边的名字和赋值运算符;即:new 类名称();

      匿名对象只能使用唯一一次,下次再用不得不创建新的对象;(使用建议:如果有对象只需要使用一次,就可以使用匿名对象)

      标准的创建对象的语句:类名 对象名字=new 类名();( 其实是创建了一个对象然后将该对象的地址给了左边,而匿名对象的地址没有其他人,也就是不能再使用第二次了,可以理解为第二次找不着了)

      匿名对象可以用来简化创建对象并调用方法的语句、当作传递的参数、当作返回值

      比如:

      (1)int sum1=new Scanner(System.in).nextInt();

           System.out.println(sum1);

     (2)public static void methodParam(Scanner sc){...}

           methodParam(new Scanner(System.in));

    (3)public static Scanner methodReturn(){return new Scanner(System.in);}

4、字符串String

      4.1String是个类,是在java.lang路径下的,这也就是为什么可以在声明字符串时候直接String,因为默认不用导包;

      4.2Java程序中所有的字符串的字面值(如:“ABC”),都作为此类的实例实现。也就是程序中所有双引号字符串,都是String类的对象(就算没有new,也照样是)。

      4.3字符串的特点:

             1、字符串的内容永不可变;(字符串是常量)

             2、正是因为字符串不可改变,所以字符串可以被共享使用(共享使用可以节省内存);

             3、字符串的效果上相当于char[]型字符数组,但是底层原理是byte[]字节数组

    4.4 创建字符串的常见方式(3种构造方法和1种直接创建):

              public String();  创建一个空白的字符串,不含有任何内容。    String str=new String();

              public String(char[] array);    根据字符数组的内容,创建对应的字符串。(相当于将字符数组中的字符串起来,就是字符串)

              char[] charArray={'A','B','C'};String str2=new String(charArray);

              public String (byte[] array);    根据字节数组的内容,来创建对应的字符串。

              byte[] byteArray={97,98,99};    String str3=new String(byteArray);

              直接创建:String str="hello";(这同样是字符串的对象)

             java 中定义一个字符串和字符串数组分别为:String a=new String();  String[] str=new String[]{"a","bb","c"};

4.5字符串的常量池(只有双引号直接写创建的String才在字符串常量池中,new的不在池中):

      对于基本数据类型来说,==是进行数值的比较;

      对于引用类型来说,==是进行地址值的比较;(在创建对象的时候,右边是对象,左边是名字,名字其实就是一个保存了对象地址的变量)

                    例子(解释如图1):

                    String str1="abc";

                    String str2="abc";

                    char[]  charArray={'a','b','c'};

                     String str3=new String(charArray);

                    System.out.println(str1==str2);      //true       

                     System.out.println(str1==str3);     //false

      从JDK1.7开始,字符串常量池在堆当中

图1

  4.6 字符串的使用方法(每当觉得字符串的值发生了改变,其实都是创建了一个新的字符串):

      4.6.1 字符串的比较的相关方法:

          “==”进行的是对象的地址值的比较,如果一定要比较对象的内容,可以使用两种方法:

public booleanequals(Object obj);//只有参数是一个字符串,而且内容相同的才会返回值true,否则返回false,而且严格区分大小写;

(注意事项:1、Object可以用来接收任何对象;2、equals方法具有对称性,也就是a.equals(b)与b.equals(a)的效果是一样的;3、如果比较的双方一个是常量一个是变量,推荐将常量字符串写在前面,也就是推荐:"abc".equals(str);不推荐:str.equals("abc");,因为如果str是null的时候,程序就会报错。)所有的引用类型都可以设置成null;

            puclic  boolean equalsIgnoreCase(String str);  //忽略大小写,进行内容比较;

      4.6.2字符串的获取的相关方法:

            public int length();  //获得字符串当中含有的字符个数,拿到字符串的长度;

            public String concat(String str);//将当前字符串与参数字符串拼接成为(创建)新的字符串(不会影响原来的两个字符串,三个相互独立)并作为返回值返回;

            public  charcharAt(int index);  //获得指定索引位置的单个字符;(索引从0开始)

            public  int indexOf(String str);  //查找参数字符串在本字符串当中首次出现的索引位置并返回,如果没有查找到就返回-1值;

       4.6.3字符串中的截取方法:

            public String  substring(int index);  //截取从参数位置一直到字符串末尾,返回截取的字符串;

            public String substring(int begin,int end);//截取从begin开始一直到end结束中间的字符串(注意:[begin,end),包含左边不包含右边)

           注意: String str="ABC";

                       System.out.println(str);

                       String str="eds"

                      System.out.println(str);

         上面的代码,字符串的内容仍然是没有改变的,str中保存的是地址值,本来保存的是“ABC”的地址值,后来保存的是“eds”的地址值;

        4.6.4字符串的与转换的相关方法:

                public char[] toCharArray();    //将当前字符串转换成字符数组并作为返回值;

                public byte[] getBytes();  //获得当前字符串的底层的字节数组;

                public String replace(CharSequence oldString,CharSequence newString);//将所有的出现的老字符串替换成新的字符串,返回新的字符串;charSequence意思就是可以接受字符串类型;

        4.6.5字符串的与分割相关的方法:

              public String[] split(String regex);  //按照参数的规则,将字符串切分为几个部分。

              split方法的参数其实是一个正则表达式;如果要用.来切分,必须写成"\\.";

5、工具类

     5.1 

      java.util.Arrays是一个与数组相关的工具类,里面提供了大量的静态方法,用来实现数组的相关操作; 

     public static StringtoString(数组);将参数数组变成字符串(按照默认格式:元素1,元素2,元素3,。。。); Arrays.toString(数组);

     比如:int[] charArray={4,3,1,5,6,2};

                 System.out.println(Arrays.toString(charArray)); 

                 System.out.println(charArray);

                 结果为:[1, 2, 3, 4, 5, 6]          [I@61bbe9ba

      public static void sort(数组);按照默认升序对数组进行排序; Arrays.sort(数组);

                    sort方法注意事项:1、如果数组中是数值,默认从小到大排序;2、如果是字符串,sort默认按照字母升序;3、如果是自定义的类型,那么这个自定义的类需要Comparable或者Comparator接口的支持;

     5.2  Math工具类:

                      public static double abs(double num);  //获得绝对值,有多种重载;

                      public static double ceil(double num);   //向上取整(结果会带小数点,比如30.0)

                      public static double floor(double num); //向下取整(结果会带小数点,比如30.0)

                      public static long round(double num);  //四舍五入  (结果不带小数点)

     5.3 Random类:

                      import java.util.Random;

                      Random r=new Random();

                      System.out.println(r.nextInt());    //nextInt()获取的是一个随机的Int数,范围是Int的所有范围,有正负。 nextInt(a)  //这表示生成在区间范围[0,a)的随机数;

  6、数组

        任何数据类型都可以作为数组当中元素的类型(比如:基本数据类型、字符串、类对象等);

        数组有一个缺点,一旦创建,程序运行期间长度不能改变;

        Person[] array=new Person[3];  Person one =new Person("name",age);  array[0]=one;...

  7、 ArrayList集合类

          ArrayList集合的长度是可以改变的,数组的长度是不可以改变的;

创建ArrayList时候,需要指定泛型即指定ArrayList其中E的值,注意泛型的值不能是基本类型,只能是引用类型(集合中保存的都是地址值,而基本类型没有地址值)。

          如果希望向ArrayList存储基本数据类型,必须使用基本数据类型对应的“包装类”(从JDK1.5开始,支持自动装箱【基本类型——>包装类型】、自动拆箱【包装类型——>基本类型】);

          常见的方法:(查阅API文档)

                  对象名.add();

                  public E get(int index);      //从ArrayList中获取元素(注意是获取,意思是元素还呆在原来数组中),参数是索引,返回对应位置的元素;

                  public E remove(int index);  //删除掉对应索引位置的元素,返回值是被删除掉的元素;

                  public int size();//返回的是集合的长度,即集合中有多少个元素;

备注:从JDK1.7开始,右侧的尖括号中的内容可以不写,但是尖括号本身还是要写的。

                    对于ArrayList来说,直接打印得到的不是地址值而是内容,如果内容是空,那么得到的是空的中括号[];

上一篇 下一篇

猜你喜欢

热点阅读