第52节:String,权限修饰符,方法,集合

String
String str1 = "dashu";
String str2 = "dashu";
String string = new String("dashu");
System.out.println(str1 == string);
// 结果为 false
面试题目:这个语句创建了多少个对象?
new String("dashu");
这个答案为1或者2,因为如果"dashu"这个字面值如果在常量池中已经出现过,那么就只创建一个对象,如果没有出现过就会创建两个对象,new的出现一定会有一个对象被创建,所有确保有一个对象被创建.
String str1 = "dashu";
String str2 = "da" + "shu";
System.out.println(str1 == str2);
// 结果为 true
为啥
str1 == str2相等,是因为在编译的时候已经为"dashu"字面值,已经拼接好了,所以进行比较时,就会相等.
String str1 = "dashu";
String str2 = "da";
String str3 = str2 + "shu";
System.out.println(str1 == str3);
// 结果为 false
原理是通过
stringbuilder的拼接方法,然后在调用toString()方法.
在String中有一个intern()方法,它返回的是常量池中字面值的地址,如果在常量池中没有这个字面值,就会把这个字面值先加到常量表后,返回这个字面值的地址.
把上面的代码添加intern()试试:
String str1 = "dashu";
String str2 = "da";
String str3 = str2 + "shu";
System.out.println(str1 == str3.intern());
// 结果为 true
权限修饰符
class Chirld{
public void publicMethod(){
// public为任何地方都可以通过子类的对象进行访问
}
protected void protectedMethod(){
// protected为私有方法,只能在子类中进行访问
}
private void privateMethod(){
// private为只能在本来进行访问,除了子类可以调用,其他都不可以进行访问这个方法
}
}
public Father extends Chirld{
public static void main(String[] args){
new Father().publicMethod();
new Father().protectedMethod();
}
}
实例方法是什么呢?不用static添加修饰的方法就是了,访问实例方法,只能通过创建对象进行访问.
什么是类方法呢?就是用static添加修饰的方法就是了,访问这个方法可以通过创建对象进行访问,也可以通过类名进行调用进行访问.
方法
方法的重载:方法名一样,参数名不一样
重载的出现就是为了解决操作同种方法的动作,但是类型不同的功能需求.
public Father extends Chirld{
public static void main(String[] args){
publilc void add(int a){
System.out.println(a+1);
}
publilc void add(long b){
System.out.println(b+1);
}
}
}
方法的重载为编译时的多态
//
class GuoWang{
public void add(){
System.out.println("GuoWang");
}
}
//
public class DaShu extends GuoWang{
public void add(){
System.out.println("DaShu");
}
public static void main(String[] args){
// 变国王
GuoWang gw = new DaShu();
gw.add();
}
}
// DaShu
方法的多态,复写父类的方法.方法的参数不一样为重载,一样为复写.
变量的介绍格式: 变量类型 + 变量名
变量的作用是用来存储信息的容器
集合
集合也是容器,把拥有相同类型的变量存储起来的,集合类型 + 集合名字.
Collection
-> List -> ArrayList LinkedList
-> Set -> hashSet treeset
Map
-> hashmap
-> treemap
举例:
// 源码
public interface List<E> extends Collection<E>{
int size();
boolean isEmpty();
....
}
public interface Collection<E> extends Iterable<E>{
int size();
boolean isEmpty();
...
}
集合中的常用方法:
Collection<E>
size():返回类型为
int.
isEmpty():返回类型为boolean.
contains(Object):返回类型为boolean.
iterator():Iterator<E>
toArray():Object[]
toArray(T[]):T[]
add(E):返回类型为
boolean
remove(Object):返回类型为boolean
containsAll(Collection<?>):返回类型为boolean
addAll(Collection<? extends E>):返回类型为boolean
removeAll(Collection<?>):返回类型为boolean
retainAll(Colleciton<?>):返回类型为boolean
clear():返回类型为void
equals(Object):返回类型为boolean
hashCode():i返回类型为int
spliterator():
Spliterator<E>
stream():Stream<E>
parallelStream():Stream<E>
default Stream<E> stream(){
return StreamSupport.stream(spliterator(), false);
}
接口的定义:public abstract 返回类型 方法名(参数),从jdk1.8开始可以实现方法了,用default修饰.
interface Student{
void go();
default void dohomework(){
System.out.println("dohomework");
}
}
// 实现接口
public class Dashu implements Student{
public static void mian(String[] args) throws Exception{
new Dashu().dohomework();
}
@Override
public void go(){}
}
这个特性的引入是为了扩展接口中的方法
源码:
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>
public class ArrayList<E> extends AbstractList<E>
implements List<E>,RandomAccess,Cloneable,java.io.Serializable
Collection<T>接口 -> AbstractCollection<E>
List<T>接口 -> AbstractList<E>
往后余生,唯独有你
简书作者:达叔小生
90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通
简书博客: https://www.jianshu.com/u/c785ece603d1
结语
- 下面我将继续对 其他知识 深入讲解 ,有兴趣可以继续关注
- 小礼物走一走 or 点赞
第52节:String,权限修饰符,方法,集合的更多相关文章
- String,权限修饰符,方法,集合
String String str1 = "dashu"; String str2 = "dashu"; String string = new String( ...
- 阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第6节 权限修饰符_6_四种权限修饰符
四种权限修饰符.从大到小 纵向再分成四种情况 同一个类 同一个类里面.private方式,可以访问到本类里面的 num成员变量 前面不写修饰符也能访问到 (default)就是不写的这种情况 受保护的 ...
- 章节五、2-Package包和权限修饰符
一.Package包 为了更好的组织类,java提供了包机制,用于区别类名的命名空间. 包的作用: 1.把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2.如同文件夹一样,包也采用了 ...
- Java学习笔记10---访问权限修饰符如何控制成员变量、成员方法及类的访问范围
1.Java有三种访问权限修饰符,分别为public.protected.private,还有一种为缺省权限修饰符的情况,记为default.其中,可以由public和default来修饰类:这四种修 ...
- Java访问权限修饰符public protected friendly private用法总结(转载好文Mark)
首先声明:Java中,friendly这个修饰符并没有显式的声明,在成员变量和方法前什么修饰符也不用,默认的就是friendly.为了条理清晰,分三种不同情况来总结. 一 访问权限修饰符修饰成员变量和 ...
- 06 面向对象:多态&抽象类&接口&权限修饰符&内部类
多态: /* 多态(polymorphic)概述 * 事物存在的多种形态 多态前提 * a:要有继承关系. * b:要有方法重写. * c:要有父类引用指向子类对象. * 成员变量 * 编译看左边(父 ...
- 匿名类、包、权限修饰符_DAY10
1:内部类(理解) (1)把类定义在一个类的内部. (2)特点: A:内部类可以直接使用外部类的成员,包括私有. B:外部类要使用内部类成员,必须创建对象使用. 例子: public c ...
- Java 访问权限修饰符以及protected修饰符的理解
2017-11-04 22:28:39 访问权限修饰符的权限 访问修饰符protected的权限理解 在Core Java中有这样一段话“在Object类中,clone方法被声明为protected, ...
- day04(权限修饰符,内部类,局部内部类,匿名内部类)
权限修饰符, Public >protected >default > private public 公共权限 随便都可以访问 protected 子类可以访问权限 (子类 ...
随机推荐
- oracle错误(ORA:12154 ORA:01034 和 ORA:27101 ORA-18008 ORA-01081)
按照正常操作流程,启动项目,发现项目报错,原因是连接不上oracle数据库, PLSQL连接时报错,错误码 ORA:12154 无法解析指定的连接标识符 第一次,遇到这个错误,在网上找了资料都是需要 ...
- 国内最火的10款Java开源项目,都是国人开发,CMS居多
原文链接:https://www.cnblogs.com/jimcsharp/p/8266954.html 国内的开源环境已经相当好,但是国内开发注重是应用,创新有但不多,从榜单可以看出,专门搞技术的 ...
- [基础篇] 01_MySQL的安装与配置
- Django实现文件的上传
Django实现文件的上传 1.前端页面:使用file对象,读取文件对象传递到views中.需要设定enctype="multipart/form-data",表明不对字符进行编码 ...
- IT人保护视力的10个有效方法
保护视力锻炼十法 有关资料表明:近年来,我国中小学生的近视率呈逐年增长的趋势,1993年底已高达60左右.众所周知,近视除了与遗传有一定联系外,还与光线不足.近距离阅读过多等眼睛过度疲劳密切相关. ...
- Itreatot接口实现类中modCount的作用
modCount只有在本数据结构对应迭代器中才使用,以HashMap为例: private abstract class HashIterator implements Iterator { Entr ...
- vue2项目结构搭建
vue2项目结构初搭建与项目基本流程 一.开始项目结构搭建的重要性 决定项目是否能够健康成长 决定了项目是否利于多人协作开发 决定了项目是否利于后期维护 决定了项目是否性能良好 决定了代码是否重用率降 ...
- Beta冲刺吐槽&&获小黄衫心得
引 个人感觉本次Beta冲刺最大的槽点还是--反向延长 "冲刺周期" 做的不一样很容易,做的更好才是非常困难的 遗留的问题 经历了Alpha冲刺,组内大多数同学也大都对实践感到些许 ...
- Newtonsoft.Json 时间格式化
时间序列化经常多个T:“2017-01-23T00:00:00” 解决方案: 日期格式化输出,指定IsoDateTimeConverter的DateTimeFormat即可 IsoDateTimeCo ...
- 解决.Net Core跨域问题
什么是跨域?浏览器从一个域名的网页去请求另一个域名的资源时,域名.端口.协议任一不同,都是跨域 跨域的几种情况 1.端口和协议的不同,只能通过后台来解决 2.localhost和127.0.0.1虽然 ...