java基础11-16

一、面向对象的三大特征

分别是封装、继承、多态

二、封装

在面向对象的语言中,吧属性和方法放在一个类中,然后对类进行命名,以后通过类型来使用类。面向对象的设计五大原则SOLID中,又一个原则称为单一职责原则,因此,类的功能不是无限的。也就是每个类应该有它专门的职责。

每个类只能封装属于它自己应该具有的属性和方法。

封装可以更好的管理代码,也可以更好地实现功能的复用。

  1. java中封装的实现。

    在java中有一种特殊的类的设计方式,具有这种设计方式的类称为javaBean,javaBean的对象在项目中用来表示一个实体,他可以封装与实体相关的属性,也可以作为数据传送的载体。

  2. javaBean的设计规则

    (1)属性是是有的,不能再外部看见这些属性。也不能在外部操作使用这些属性。

    (2)提供针对各个属性的公共的getter和setter方法,可以再外部调用这些方法操作属性。

    (3)必须具有无参的构造方法。(和jvm有联系)

  3. javaBean属性名的识别问题

    属性名是方法名中后面的部分,把第一个大写改成小写就是属性名。比如getName().这里的属性名是name.原因在于JDK处理javabean时取属性名就是通过方法名去取的,而不是属性名

三、Random类

在java.util中,该类的实例用于生成伪随机数的流,也就是用它的对象来生成随机数。

  1. Random()创建一个随机数生成器
  2. public int nextInt(int bound)返回伪随机的,均匀分布int值结余0(含)和指定值(不包含)
  3. public double nextDouble() 从该随机数发生器的序列中0.0和1.0之间的double值
四、Scanner类

Scanner 类在java.util工具包中,一个简单的文本扫描器,用来扫描键盘输入缓冲区,因此在程序运行时可能用他的对象去接收用户通过键盘输入的数据。

  1. Scanner scanner=new Scanner (System.in) ;创建对象
  2. public String next ()返回输入的字符串
  3. public int nextInt ()返回输入的整数
五、Class ArrayList集合类

该集合内部有一个数组成员,放在集合中的元素其实就在该数组中,我们调用集合对象的方法来操作集合元素,其内部也就是对数组的各种操作,这些操作被集合类封装了。

  1. public ArrayList()构造一个初始容量为十的空列表(数组的长度为十)。内部数组可变长度,也就是通过复制老的数组到一个更大的新的数组来改变数组的长度

  2. 集合中元素的类型只能是引用类型,不能是基本类型,如果确实需要添加基本类型的数据就添加对于的包装类型的对象

  3. 一般性的增删改查操作:

        ArrayList list = new ArrayList();
        //添加元素(集合中元素的类型只能是引用类型,不能是基本类型)
        list.add("qwe");
        list.add("asd");
        list.add("123");
        System.out.println("元素总数:"+list.size());
    //覆盖元素
        list.set(1,"abc");
        //删除元素
        list.remove(0);
        list.add("456");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
    
六、final关键字

最终的,最后的定义。

作一个常用的关键字,主要用于成员变量,类,方法上面。

  1. 用final来修饰成员变量,该变量就是常量,所以它经常用来声明常量。
  2. 按照规定,类中的常量名称权用大写,最好加上static关键字以保证可以通过类来使用。
  3. 常量一旦赋值就不能更改。
  4. 如果用在类上,该类不能就继承,此类就是最终类。用在方法上,方法不能被重写。
七,String 字符串类
  1. 在程序中可以通过两种方式来创建字符串,一种直接赋值,一种是创建对象

    String str1 = "abcd";
    String str2 = new String("abcd");
    
  2. 字符串之间的比较

    private final char value[];
    

    value是数组,该数组就是用来存放字符串中各个字符的。

    • equals比较,也就是比较两个字符串中的value的值是否相等,也就是比较两个字符串中的值。

      System.out.println(str1.equals(str2));
      //调用方法比较对象,比较数组一样,所以值一样
      
    • ==比较,用来比较两个字符串变量的值是否相等,也就是进行地址的比较

    • 比较结果

用赋值产生的字符串是常量,存放在常量池中。通过new创建的字符串不是常量(也包括使用Scnner输入保存的字符串!!).new常见的字符串存放在堆heap区是堆区中的一个对象。因此通过赋值和new出来的字符串一定不相等,他们是不同的对象

  • String str1 = "abcd";
    String str3 = "abcd";
    System.out.println(str1==str3); //两者引用的同一个对象
    

    结果为true,这里采用了享元模式,如果两个字符串都是通过赋值产生的且值相等,那么他们就公用常量池中的同一份字符串,所以他们的地址是相同的。

  • String a="abc";
         String b="ab";
         String c="c";
         System.out.println(a==(b+c));//结果返回false
    

    在编译器,编译器发现是变量的操作,因此不会在常量池中为b+c的结果分配位置,在运行的时候才会分配新的空间

  • String a="abc";
    System.out.println(a==("ab"+"c"));  //返回true
    

    编译在编译时就会在常量池中给表达式的值分配内存,为此值在前面已经分配,按照享元模式的要求,让表达式的值与a变量的值共享一个值

    (因为已经有了的变量所以直接用,然后里面的地址一样的,所以)

  1. 要程序中不要频繁对一个字符串进行操作,因为字符串是常量不能在原值上进行修改,任何的改变都会常见一个新对象,如果任由其去操作,会造成内存溢出。

关于比较的其他参考博客:

涉及源码的:https://www.cnblogs.com/mic112/p/15474295.html

java中利用Scanner键入的字符串和其他字符串的比较:https://www.cnblogs.com/holab/p/8586872.html

其他:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OCFuGlm5-1637110250663)(C:\Users\Allen\AppData\Roaming\Typora\typora-user-images\image-20211116153909204.png)]


      //关于时间的试验
        System.out.println("输出毫秒:"+System.currentTimeMillis());//查看时间(这里输出的是毫秒值)
        SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateStr = dateformat.format(System.currentTimeMillis());
        System.out.println("现在的时间是"+dateStr);
         dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            long time = dateformat.parse("2021-11-16 16:03:17").getTime();
            System.out.println(time);
        } catch (ParseException e) {
            e.printStackTrace();
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值