• Java Object、Scanner、String 、生成jar包


    生成jar包

    1、如何生成jar包:

      在eclipse中,选中要导出内容,右键export---->Java---->Jar File

      在弹出的框中,选择要生成的文件路径,点击finish

    2、第三方Jar包:

      Jdk开发商是第一方、程序员作为用户是第二方,开源社区、组织或者其他公司都可以认为是第三方

      一旦将第三方的jar包导入到我们的工程中来,就可以使用第三方开发好的所有功能

    3、导入第三方jar包:

      1、在工程下新建一个目录(专门用于存放第三方jar),命名为lib

      2、将下载好的第三方jar包,拷贝到lib目录中

      3、将导入的jar包添加到Build Path中(鼠标右键,选择build path----> add to build path)

      4、看到奶瓶状的标记出现,就说明该jar包中的所有类型可以直接使用了

    4、使用第三方jar包,查看原码:

      1、使用鼠标右键,选择Open declaration

      2、使用快捷键F3

      3、使用键盘ctrl + 鼠标左键

    5、关联源代码:

      Attach Source ---->external File或者Folder---->找到原码所在的目录即可

    Object

    1、Object类是所类型的顶层父类,所有类型的类直接或者间接的父类,所有的类型中都含有Object类中所有的方法。
      class Animal{}
      class Dog extends Animal{}
    2、随意定义一个类型,不手动显定义其父类,那么这个类的父类是Object类
    3、Object类的构造方法 Object()
      1.可以自己创建对象
      2.让子类访问
      3.Object类在执行构造方法时,不去访问自己的父类,因为没父类了。

    4、Object类的常用方法

      1.getClass()方法
        返回当前 对象的运行时类
        运行时类:真正创建对象所使用的那个子类类型。
        返回值:Class类型的对象。
      2.hashCode() 方法
        1.根据对象的情况,生成的一个整数,就是哈希码值,生成数字的方法 就是hashCode()
        2.注意事项
          同一个对象多次调用hashCode方法,返回相同的整数。
      3.String toString()
        返回该对象的字符串表示。
        1.Object类型中,这个方法的实现,全类名+@+哈希码值的十六进制表示
          getClass().getName()+"@"+Integer.toHexString(hashCode())
        2.打印对象,默认会调用toString()
        3.重写的原则:返回该对象中的所有的成员变量的值(对象的属性)
      4.boolean equals(Object obj)
        指示其他某个对象是否与此对象“相等”。
        Object类中的equals方法比较是两个对象的地址
        如果比较其它内容,需要重写equals方法。
      5.== equals方法的区别
        1.两种都是用于比较数据是否相等。
        2.不同点:
          1.比较内容不同:
            ==可以比较任意数据类型,既可以比较基本数据类型,也可以比较引用数据类型。
            equals()只能比较引用数据类型。
          2.比较规则不同:
            ==在比较基本数据类型的时候,比较的是数据的值,比较引用数据类型时,比较的是地址值
            equals方法在重写之前,比较是两个对象的地址,在重写之后,比较的是自己定的规则。

    Scanner

    1、Scanner就是一个扫描器, 可以扫描指定设备的基本数据和字符串
    2、构造方法
      Scanner(File source):扫描指定的文件
      Scanner(String path):扫描指定的路径
      Scanner(InputStream source):扫描指定的输入流
      System.in属于InputStream类的对象,默认关联键盘
    3、录入基本数据类型
      1. nextByte():获取一个byte数据
        nextShort()
        nextInt()
        nextLong()
        nextFloat()
        nextDouble()
        nextBoolean()
      2.注意事项
        1.nextChar()没有这个方法
        2.键盘录入的是数据,不是java代码,所以float类型的常量不需要加f.
        3.一次想录入多个数据,可以使用空格进行分隔
    4、录入字符串
      1.next(): 空格来分隔每个字符串
      2.nextLine():换行来分隔字符串
    5、Scanner注意事项:
      以后尽量不要交叉使用空格和换行标志分隔。

    6、小问题  

      问题:当你调用完以空格作为分隔符的方法之后,再调用一个以换行符为分隔符的方法时,这个方法不会等待你继续录入,而是直接结束程序,如果打印返回的内容,就是一个空字符串。

      原因:

      1、键盘录入123之后,其实你录入的是123+一个换行符,当使用nextInt方法之后,将123这三个字符解析成一个int类型的数字,获取到内存的变量中,在Scanner对象中,留下了一个换行符,下次再调用nextLine,这个方法是以换行符作为分隔符,在分隔符前面只剩下了一个空串,将空串返回,所以不需要等待用户继续录入了。

      2、键盘录入123之后,其实你录入的是123+换行符,当使用nextInt方法之后,将123这个数字解析成一个int类型的数字,获取到内存的变量中,在Scanner对象中,还剩一个换行符,再次调用nextInt方法时,发现只剩一个空串了,无法解析成一个int类型的数据,只能等待用户继续录入。所以不会出现上述问题。

      3、键盘录入abc之后,其实你录入的是abc+换行符,当你使用nextLine方法之后,将换行符前面的所有数据都解析成一个字符串,因此换行符前面就没有任何需要解析的数据了,如果再次调用nextLine,只需要到换行符之后寻找,只能继续等待用户录入了。(其实就是nextLine方法一碰到换行符就跳过了)

      解决方式:

      1、连续两次调用nextLine,第一次会将空串略过,第二次就会等待用户录入

      2、创建两个Scanner对象,新的Scanner对象中没有上次录入的数据,是干净的,所以不会影响下次的录入。

      3、所有的录入都以字符串的形式录入到内存中,然后再进行数据类型之间的转换

    String

    1、String就是一个字符串类型,属于java.lang包,不需要导包
    2、所有的字符串常量("helloworld","abc"),都属于字符串对象
    3、字符串的字面属于常量,存储在方法区的常量池中。
    4、String类型是一个常量,在创建之后就无法更改。平常见到的改变是重新赋值新地址
    5、因为没有提供set方法
    6、String类型的构造方法
      1.String():创建一个空字符串
      2.String(String original):创建参数字符串的一个副本(参数字符串在常量池中,构造方法创建的字符串在堆内存中)。
      3.String(byte[] bytes) :将一个字节数组转一个字符串
        将我们不认识的字节数组,转成了我们认识的字符串,过程叫解码。
        查询的是当前平台默认的编码表。
      4.String(byte[] bytes, int offset, int length)
      5.String(char[] value):
      6.String(char[] value, int offset, int count)
    7、String中常用的方法
      1.判断功能
        boolean equals(Object anObject) :比较字符串本身
        boolean equalsIgnoreCase(String anotherString)
        boolean contains(CharSequence s)
        boolean startsWith(String prefix) 
        boolean endsWith(String suffix)
        boolean isEmpty()
      2.判断功能练习
        模拟用户登录:
        正确的用户名是admin,密码是123
        键盘录入用户名和密码,一共三次机会,如果录入错误,前两次提示还有几次机会,
        最后一次提示"账号已被锁定"
        录入正确,提示“登录成功”

    import java.util.Scanner;
    
    /*
     * 模拟用户登录:
        正确用户名是admin,密码是123
        键盘录入用户名和密码,一共有三次机会,如果录入错误,前两次提示还有几次机会
        最后一次提示“登录机会已经用完”
        录入正确,提示“登录成功”
     */
    public class Demo02 {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int count = 3;
            boolean flag = true;
            while(flag){
                if(count>0) {
                    System.out.println("请输入用户名:");
                    String userName = sc.nextLine();
                    if(userName.equals("admin")) {
                        System.out.println("请输入密码:");
                        String code = sc.nextLine();
                        if(code.equals("hao123.com")) {
                            System.out.println("登录成功");
                            break;
                        }else {
                            count--;
                            System.out.println("密码错误,还有"+count+"次机会,请重新输入");
                        }
                    }else {
                        count--;
                        System.out.println("用户名错误,还有"+count+"次机会,请重新输入");
                    }
                }else {
                    System.out.println("三次机会以用完,是否重新输入?1:继续,0:退出");
                    int a = sc.nextInt();
                    if(a==1) {
                        count = 3;
                    }else{
                        break;
                    }
                }
            }
            sc.close();
        }
    }
    练习

      3.String类型的获取功能
        int length()
        char charAt(int index)
        String substring(int beginIndex, int endIndex)
        int indexOf(String str) "aabbacc"
      4.String类型的转换功能
        byte[] getBytes(String charsetName)
        char[] toCharArray()
        String toUpperCase()
        String toLowerCase()
        String concat(String str)
        static String valueOf()
      5."i lOVe jAva"-->"I Love Java"
        splite(" ")这里括号里是填正则表达式 根据给定正则表达式的匹配拆分此字符串。
      6.String类型的其它的方法
        String replace(char oldChar, char newChar)

        String replaceAll() 这里括号里是填正则表达式 替换此字符串所有匹配给定的正则表达式的子字符串。

        String replaceFirst()  替换此字符串匹配给定的正则表达式的第一个子字符串。
        String trim() " ab c "-->"abc" //去掉字符串左右两边的空格、制表符

    public class Demo01 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            String s = " ab c ";
            String s1 = s.trim();
            System.out.println(s1);//trim只能移除字符串开头和结尾的空格和制表符,字符串中间的无法移除
        }
    
    }
    trim

     

  • 相关阅读:
    trie树(板子)
    A. Many Equal Substrings(思维)
    D2 Equalizing by Division (hard version) &&D1 Equalizing by Division (easy version) (easy version)(Codeforces Round #582 (Div. 3))
    B. Square Filling ( Educational Codeforces Round 71 (Rated for Div. 2))
    A. Creating a Character(Educational Codeforces Round 72 (Rated for Div. 2) )
    字符画 (CSU 2163 )
    The Nth Item (The 2019 Asia Nanchang First Round Online Programming Contest)
    Magic Master (The 2019 Asia Nanchang First Round Online Programming Contest)
    Fire-Fighting Hero (The 2019 Asia Nanchang First Round Online Programming Contest)
    Pangu Separates Heaven and Earth(签到题)(The 2019 Asia Nanchang First Round Online Programming Contest)
  • 原文地址:https://www.cnblogs.com/xfdhh/p/11182179.html
Copyright © 2020-2023  润新知