Java初学: 包、访问权限、String字符串
包
包的概念
- 包(package)是Java提供的一种区别类的名字空间的机制,是类的组织方式,是一组相关类和接口的集合,它提供了访问权限和命名的管理机制。
包的作用
- 有利于类的查找与管理。一个软件由很多类构成,这些类按其功能可分为vo类、dao类、工具类、service类、controller类等,将这些类按其功能分门别类地放在不同包中有利于类的查找与管理;
- 解决了同名类命名冲突;
- 有利于保护类中的成员变量及其方法。类中成员变量及其方法前面的访问控制符决定了该变量和方法的使用范围;
包的命名规则
- 包名全部由小写字母(多个单词也全部小写);
- 如果包名包含多个层次,每个层次应该用“.”分割;
- 包名一般由倒置的域名开头,比如com.baidu;——不要有www
- 自定义包不能java开头;
- 注意:
- package语句用于指明该源文件定义的类所在的包。一个Java源文件中最多只能有一条package语句;
- 如果Java源文件中有package语句,则该语句一定是源文件中的第一条可执行语句,它的前面只能有注释或空行;
引包
- 什么时候需要引包:
- 自定义类中使用在不同一包中的其它自定义类时;
- 自定义类中除java.lang包以外的其它包中的JDK中自带的类时就需要引包;
- 自定义类中使用其它第三方jar包中的类或接口时需要引包;
- 如何引包:
- 直接使用完整类名引包;
完整类名(包名+类名)引包; - 使用import关键字引包有两种方法:
- import 包名.类名,这种方式用的最多;
- import 包名.*,这种方式将向类中导入该包中的所有公共类;
- 直接使用完整类名引包;
- 注意:在包中的类不能使用默认包中的类;
访问控制符
- 软件中的某些属性和方法出于程序安全考虑不允许被其它类操作和调用,这就需要使用Java中的访问权限修饰符,Java中的访问权限修饰符有4种:
public、protected、default(默认的、友好的)、private - Java中的访问权限修饰符可以修饰成员变量、构造方法、普通方法。
- 全面研究某个访问权限的使用范围需要从以下方法考虑:
- 访问控制符的适用范围:
封装
- 封装是Java三大特征之一,指使用公有方法操作类中私有属性以保证数据的安全性。
由于在一般情况下,学生的年龄不可能小于0或大于150,故将age设置为private属性然后用另外的方法来限制age以及调用age
age属性的值一定会大于、等于0且小于150
- Eclipse中快速生成setter方法和getter方法:
1、鼠标定位在类中鼠标右键点击“Source”点击“Generate Getters and Setters…”,出现下图:
2、点击“Select All”按钮点击“OK”按钮,至此操作完毕。
String字符串
实例化方式
- String类是引用数据类型,该类实例化方式有两种:
- 直接赋值,其语法格式如下:
- 构造方法实现其实例化,其语法格式如下:
这其实是用构造方法将字符数组中的元素变为一个字符串
- 构造方法实现其实例化,其语法格式如下:
- 直接赋值,其语法格式如下:
- 注:Java中有9个类可以直接赋值:8个基本数据类的封装类(Byte、Short、Integer、Long、Float、Double、Boollean、Character)和String类
- String类实例化的两种方式是有区别的:
- 直接赋值,这种方式会出现常量池数据共享的现象:
执行“String str1 = ”abc“;”后,JVM在常量池中开辟空间存放一个abc字符串空间并让str1指向该对象;
1、执行“String str1 = ”abc“;”后,JVM在常量池中开辟空间存放一个abc字符串空间并让str1指向该对象;
2、执行“String str2 = ”abc“;”时,JVM会先检查常量池中是否已经存在了一内容为abc的空间,如果存在就直接让str2指向该空间,否则就会在开辟一个新的空间存放该字符串;
1、执行“String str1 = ”abc“;”后,JVM在常量池中开辟空间存放一个abc字符串空间并让str1指向该对象;
2、执行“String str2 = ”abc“;”时,JVM会先检查常量池中是否已经存在了一个内容为abc的空间,如果存在就直接让str2指向该空间,否则就会在开辟一个新的空间存放该字符串;
3、执行“String str3 = ”def“;”时,JVM会先检查常量池中是否已经存在了一个内容为def的空间,由于不存在,所以JVM在常量池中新开辟一个空间存放def并让str3指向该空间;- 构造方法实现其实例化,这种方式每new一次就会创建新的对象:
1、执行“String str = ”abc“;”后,JVM在常量池中开辟存放abc的空间并让str指向该空间;
2、执行“String str1 = new String(str);”时,JVM直接创建一个新的对象并让str1指向该对象;
3、执行“String str2 = new String(str);”时,JVM再次创建一个新的对象并让str2指向该对象;
- 构造方法实现其实例化,这种方式每new一次就会创建新的对象:
- 直接赋值,这种方式会出现常量池数据共享的现象:
- 一般来说,直接赋值的方法用的更多一些。
- 注:字符串是常量;字符串的值在创建之后不能更改
常用方法
- length() 该方法返回字符串的长度;
- startsWith(String value) 判断字符串是否以value字符串开头,如果是返回true,否则返回false;
- endsWith(String value) 判断字符串是否以value字符串结尾,如果是返回true,否则返回false;
-
equals(String targetString) 用于判断两个字符串是否相同,完全相同返回true,否则返回false;
-
String 类equals方法和==区别:
- String类中的equals方法用于判断两个字符串内容是否相同;
- 如果所比较的两个变量是引用类型,则==用于比对两个变量指向的是否为同一个存放数据的地址;如果是基本数据类型的两个变量进行比较,则比较的是值是否相等;
-
- equalsIgnoreCase (String value) 用于判断两个字符串忽略大小写后是否相同,相同返回true,否则返回false;
- toCharArray() 将字符串转换为char类型的数组;
其他的String方法: