javaSE(包、封装、static用法、代码块)
创始人
2024-04-29 19:37:17
0

1.包

(文件夹)

为了更好的管理类,把多个类收集在一起成为一组,称为软件包。
在Java中也引入了包,包是对类、接口等的封装机制的体现,是一种对类或者接口等的很好的组织方式,比如:一个包中的类不想被其他包中的类使用。包还有一个重要的作用:在同一个工程中允许存在相同名称的类,只要处在不同的包中即可

package (包) 指:类所在的包
import (引入包中的类)
引入在类中需要的类(我们写的程序就是一个类,import 的作用就是 在我们写程序的时候, 引入我们所需要的类)

在这里插入图片描述

import java.util.Arrays;// 导入包util包中的 Arrays 类
public class ObjectOrientedProgramming {public static void main(String[] args) {int[] array = {1,2,3,4,5};System.out.println(Arrays.toString(array));在输入 Arrays 的途中,编译器会给出提示,只要我们选择就能自动导入对应包中的类。// Arrays 是一个类,而toString 由类 来调用的,说明toString 是一个静态方法 // 也就是说所有通过类调用的方法都是 静态的}
}

创建自定义的包

src–>New–>Package -->命名–>创建类
包的命名:倒置(且全小写)
在新创建的 Test.java 文件的最上方, 就出现了一个 package 语句

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

常见的包

  1. java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。
  2. java.lang.reflect:java 反射编程包;
  3. java.net:进行网络编程开发包。
  4. java.sql:进行数据库开发的支持包。
  5. java.util:是java提供的工具程序包。(集合类等) 非常重要
  6. java.io:I/O编程开发包

2.封装

用关键字private进行封装

封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行 交互

例如:计算机厂商在出厂时,在外部套上壳子,将内部实现细节隐藏起来,仅仅对外提供开关机、鼠标以及键盘插孔等,让用户可以与计算机进行交互即可。

在这里插入图片描述

get和set函数

对封装后的类进行访问

class Person {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

步骤
鼠标右击 -->Generate–>Getter and Setter
在这里插入图片描述
还能快速生成构造方法
在这里插入图片描述

3.Static

static修饰的成员变量,称为静态成员变量,静态成员变量最大的特性:不属于某个具体的对象,是所有对象所共享的。
【静态成员变量特性】

  1. 不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中
  2. 既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问
  3. 类变量存储在方法区当中
  4. 生命周期伴随类的一生(即:随类的加载而创建,随类的卸载而销毁)

静态成员变量

在这里插入图片描述

访问静态成员变量:推荐 Student类.classRoom

public class Student{public String name;public int  age;public static String classRoom = "107号房";public static void main(String[] args) {// 静态成员变量可以直接通过类名访问System.out.println(Student.classRoom);Student s1 = new Student("Li leilei", 18);Student s2 = new Student("Han MeiMei", 19);Student s3 = new Student("Jim", 18);// 也可以通过对象访问:但是classRoom是三个对象共享的System.out.println(s1.classRoom);System.out.println(s2.classRoom);System.out.println(s3.classRoom);}}

静态成员方法

在这里插入图片描述
【静态方法特性】

  1. 不属于某个具体的对象,是类方法
  2. 可以通过对象调用,也可以通过类名.静态方法名(…)方式调用,更推荐使用后者
  3. 不能在静态方法中访问任何非静态成员变量(非静态访问非静态、非静态访问静态、静态访问静态)
  4. 静态方法中不能调用任何非静态方法,因为非静态方法有this参数,在静态方法中调用时候无法传递this引用。
public static String getClassRoom(){System.out.println(this);return classRoom;
}// 编译失败:Error:(35, 28) java: 无法从静态上下文中引用非静态 变量 thispublic static String getClassRoom(){age += 1;return classRoom;
}// 编译失败:Error:(35, 9) java: 无法从静态上下文中引用非静态 变量 age
public static String getClassRoom(){doClass();//非静态成员方法return classRoom;
}// 编译报错:Error:(35, 9) java: 无法从静态上下文中引用非静态 方法 doClass()

初始化

除下列1、2、3外,还可以用代码块给静态成员变量初始化。
在这里插入图片描述

4.代码块

1.本地代码块
2.实例代码块–>非静态代码块/构造块
3.静态代码块
4.同步代码块–>(多线程)

实例代码块

构造块:定义在类中、在方法之外的代码块(不加修饰符)。也叫:实例代码块。构造代码块一般用于初始化实例成员变量。

public class Student{//实例成员变量private String name;private  int age;    public Student() {System.out.println("I am Student init()");}//实例代码块{this.name = "csdn";this.age = 12;System.out.println("I am instance init()!");}public void show(){System.out.println("name: "+name+" age: "+age);}
} 
public class Main {public static void main(String[] args) {Student stu = new Student();stu.show();}
}
// 运行结果
I am instance init()
I am Student init()!
name: csdn age: 12 

静态代码块

使用static定义的代码块称为静态代码块。一般用于初始化静态成员变量。

public class Student {//实例成员变量private String name;private  int age;{System.out.println("I am Student init()");}// 静态代码块static {System.out.println("I am static init()!");}public Student(){System.out.println("I am Student init()!");}public static void main(String[] args) {Student s1 = new Student();Student s2 = new Student();}}

总结:
1. 静态代码块不管生成多少个对象,其只会执行一次
2.静态成员变量是类的属性,因此是在JVM加载类时开辟空间并初始化的
3.如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次执行(合并)
4.实例代码块只有在创建对象时才会执行
在这里插入图片描述

5.对象的打印

在这里插入图片描述

如果想要默认打印对象中的属性该如何处理呢?
答:重写toString方法即可

public class Person {String name;String gender;int age;public Person(String name, String gender, int age) {this.name = name;this.gender = gender;this.age = age;}@Overridepublic String toString() {return "[" + name + "," + gender + "," + age + "]";}public static void main(String[] args) {Person person = new Person("Jim","男", 18);System.out.println(person);}
}// 输出结果:[Jim,男,18]

在这里插入图片描述

相关内容

热门资讯

安卓新系统好还是旧系统,安卓新... 你有没有发现,每次安卓系统更新,朋友圈里就炸开了锅?有人欢呼雀跃,有人愁眉苦脸。那么,安卓新系统真的...
安卓系统主要界面元素,探索主要... 你有没有发现,每次打开安卓手机,那熟悉的界面总是让人眼前一亮?今天,就让我带你一起探索安卓系统那些让...
安卓平板7.0系统好吗,智能生... 你有没有想过,拥有一台运行着最新安卓7.0系统的平板电脑,会是怎样的体验呢?想象手指轻轻滑过屏幕,流...
安卓手机换联想系统,深度体验联... 你有没有想过,你的安卓手机换上联想系统后,会发生哪些奇妙的变化呢?想象原本熟悉的界面突然焕然一新,是...
刷安卓系统的工具,轻松实现系统... 你有没有想过,你的安卓手机是不是也能像电脑一样,装上各种有趣的系统呢?没错,今天就要来聊聊这个神奇的...
机械革命安卓系统设置,个性化定... 机械革命安卓系统设置全解析在当今这个数字化时代,智能手机已经成为我们生活中不可或缺的一部分。它不仅仅...
安卓监管系统有哪些,技术手段与... 你知道吗?随着智能手机的普及,安卓系统已经成为了全球最受欢迎的操作系统之一。但是,你知道吗?为了让这...
安卓系统更新知乎,畅享智能生活... 你有没有发现,你的安卓手机最近是不是总在提醒你更新系统呢?别急,别急,今天就来给你好好聊聊这个话题。...
安卓手机系统铃声目录,个性化音... 你有没有发现,每次拿起安卓手机,那熟悉的铃声总是能瞬间唤醒你的注意力?今天,就让我带你一起探索一下安...
安卓系统修改开机画面,安卓系统... 亲爱的手机控们,你是否厌倦了每次开机时看到的那张千篇一律的开机画面?想要给你的安卓手机来点新鲜感?那...
安卓系统隐私密码,守护个人隐私... 你有没有想过,你的安卓手机里藏着多少秘密?那些聊天记录、照片、支付信息,全都在那里静静地躺着,等着被...
8848是安卓什么系统,搭载安... 你有没有想过,你的手机里那个高大上的8848手机,它到底是用的是什么操作系统呢?别急,今天就来给你揭...
安卓刷windowsxp系统下... 你有没有想过,让你的安卓手机瞬间变身成一台Windows XP电脑呢?没错,就是那个经典的操作系统!...
插画安卓系统推荐哪个,插画风格... 你有没有想过,手机里的插画风格也能成为个性展示的一部分呢?想象你的手机界面就像是一幅精美的画作,是不...
安卓系统怎么升级cpu,解锁性... 亲爱的安卓用户们,你是否也和我一样,对手机性能的提升充满了期待?想要让你的安卓手机跑得更快,升级CP...
安卓系统的烹饪游戏,指尖上的美... 你有没有想过,在忙碌的生活中,也能来点不一样的乐趣呢?比如说,在安卓系统上玩一款烹饪游戏,既能放松心...
安卓系统及应用开发,Andro... 你有没有想过,为什么你的手机里那么多好玩的应用?为什么它们能那么智能地为你服务?这背后,可是有着一套...
安卓系统预装软件封装,安卓系统... 你有没有发现,每次拿到新手机,安卓系统里总有一些我们平时不太会用到的软件?这些软件就像是被精心包裹的...
腾讯的安卓定制系统,打造专属智... 你知道吗?在手机操作系统这个江湖里,腾讯可是个低调却又实力派的大侠。他们家的安卓定制系统,就像是他们...
安卓系统所占的内存,揭秘内存占... 你有没有发现,你的安卓手机越来越慢了?是不是觉得内存不够用,打开个应用都卡得要命?别急,今天就来跟你...