Java教程

Java- 面向对象-封装、String、static、代码块

本文主要是介绍Java- 面向对象-封装、String、static、代码块,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

封装

 概念:
        什么是封装?
            隐藏现实细节,暴露出合适的访问方式。(合理隐藏、合理暴露)
        封装的好处:
            加强程序代码的安全性。
            适当的封装可以提升开发效率,同时可以让程序更容易理解和维护。
        封装的实现步骤:
            一般对成员变量使用private(私有)关键字修饰进行隐藏,private修饰后该成员变量就只能在当前类中访问。
            提供public修饰的公开的getter、setter方法暴露其取值和赋值。

String 

 String概述
        java.lang.String类代表字符串,String类定义的变量可以用于指向字符串对象,然后操作该字符串。
        java程序中所有的字符串文字(例如“abc“)都为此类对象。
    String类的特点详解
        String是什么,可以做什么?
            字符串类型, 可以定义字符串变量指向字符串对象。
        String是不可变字符串的原因?
            string变量每次的修改其实都是产生并指向了新的字符串对象。
            原来的字符串对象都是没有改变的,所以称为不可变字符串。
        创建字符串对象的2种方式:
            方式1:直接使用“”定义(推荐方式)
            方式2:通过String类的构造器创建对象
            有什么区别吗?
                以“”方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会在其中存储一份。
                通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中。
        字符串的内容比较:
            使用equals比较,只比较内容即可;== 比较的是内容和储存的存储地址。
    String类方法
        获取字符串长度    int length();
        获取特定位置的字符  char   charAt(int index);  
        获取特定字符的位置  int   indexOf(char ch);
int   indexOf(String str);
        获取指定字符最后一个的位置  int  lastIndexOf(char ch);
        字符串的拼接   concat();
        将字符数组转为字符串
            String(char[] chs);
            String(char[] chs, int offset, int count)
            static String valueOf(char[] chs);
        将字符串转为字符数组
            char[]   toCharArray();
        字符串替换
             String  replace(char oldChar, char newChar);
            String replaceAll(String old, String new);
        切割字符串
            String[]   split(String regex);
        截取字符串
            String subString(int beginIndex);
                String subString(int beginIndex, int endIndex);  要头不要尾
        将小写字母转为大写字母
            String  toUpperCase();
         将大写字母转为小写字母
            String toLowerCase();
        去除收尾空格的
            String  trim();
  

static


static关键字的作用:
static是静态的意思,可以修饰成员变量,表示该成员变量只在内存中存储一份,可以被共享访问、修改。
static修饰成员变量可以分为2类:
        静态成员变量(有static修饰,属于类,内存中加载一次):常表示如在线人数信息、需要被共享的信息,可以被访问。
访问方式:类名.静态成员变量 //静态成员变量 public  static String onlineNumber = 160;
实例成员变量(无static修饰,存在于每个对象中):常表示姓名name、年龄age等属于每个对象的信息。
          访问方式:对象.实例成员变量
    static修饰成员方法的基本用法:
        静态成员方法(有static修饰,属于类),建议用类名访问,也可以用对象访问
        实例成员方法(有static修饰的,属于对象),只能对象触发访问。
        使用场景
            表示对象自己行为的,且方法中需要访问实力成员的,则该方法必须申明成实例方法。
            如果该方法是以执行一个通用功能为目的,或者需要方便访问,则可以申明成静态方法。
    总结:
        作用:
         1.static修饰成员变量
                语法格式:
                    static int age;//静态变量
                        注意事项:
                            1.使用static修饰成员变量的时候在调用静态的成员变量的时候 :类名.静态的变量名      不需要借助于对象,早于对象的创建。和对象没有关系。
                            2.代码中没有创建对象的时候,static修饰的变量已经被加载进来了。
                            3.分析内存:只要是static修饰的变量,都在.class文件编译阶段就已经加载到内存的方法区了。
            2.static 修饰成员方法
                语法格式:
                    public  static void/数据类型  方法名字(){
 
                     }
                        注意事项:
                            ​    1.静态的成员方法和对象无关,直接使用类名直接调用
                            2.静态的成员方法会随着.class文件的加载而加载,也会被加载到方法区。早于对象的创建。
                            3.静态方法不能被重写

                            4.静态方法中能不能使用非静态的成员属性和成员方法?
静态的成员方法早于对象的创建,普通的成员属性和成员方法只能是对象创建好以后才能进行调用的
                            5.静态方法中能不能创建对象?能!!!
            3.static修饰代码块【静态代码块】
                static {
  代码
}
                    类文件只加载,静态代码块就会被加载

执行顺序  静态代码块-----》构造代码块----------》构造方法

面试题:为什么静态代码块优先于构造代码块和构造方法执行?

因为构造代码块和构造方法在实例化对象的时候才真正的执行

静态代码块和对象没有关系,是在.class被加载以后就立马执行的,早于对象的创建。

代码块


    代码块的概述
        代码块是类的5大成分之一(成员变量、构造器、方法、代码块、内部类),定义在类中方法外。
        在Java类下,使用{}括起来的代码被称为代码块
    代码块分为:
        静态代码块:
            格式:static
            特点:需要通过static修饰,随着类的加载而加载,并自动触发一次,优先执行。
            作用:可以在程序加载时进行静态数据的初始化操作(准备内容)
            使用场景:在类加载的时候做一些静态数据初始化操作,以便后续使用。
        构造代码块(了解,用得少):
            格式: { }
            特点:每次创建对象,调用构造器执行时,都会执行该代码块中的代码,并在构造器执行前执行
            使用场景:初始化实例资源

这篇关于Java- 面向对象-封装、String、static、代码块的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!