Java Object、Scanner、String 、生成jar包

生成jar包

一、如何生成jar包:java

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

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

二、第三方Jar包:eclipse

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

  一旦将第三方的jar包导入到咱们的工程中来,就可使用第三方开发好的全部功能ui

三、导入第三方jar包:编码

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

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

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

  四、看到奶瓶状的标记出现,就说明该jar包中的全部类型能够直接使用了

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

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

  二、使用快捷键F3

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

五、关联源代码:

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

Object

一、Object类是所类型的顶层父类,全部类型的类直接或者间接的父类,全部的类型中都含有Object类中全部的方法。
  class Animal{}
  class Dog extends Animal{}
二、随意定义一个类型,不手动显定义其父类,那么这个类的父类是Object类
三、Object类的构造方法 Object()
  1.能够本身建立对象
  2.让子类访问
  3.Object类在执行构造方法时,不去访问本身的父类,由于没父类了。

四、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

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

六、小问题  

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

  缘由:

  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

一、String就是一个字符串类型,属于java.lang包,不须要导包
二、全部的字符串常量("helloworld","abc"),都属于字符串对象
三、字符串的字面属于常量,存储在方法区的常量池中。
四、String类型是一个常量,在建立以后就没法更改。日常见到的改变是从新赋值新地址
五、由于没有提供set方法
六、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)
七、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 trim() " ab c "-->"abc" //去掉字符串左右两边的空格、制表符

相关文章
相关标签/搜索