写给大忙人看的 Java Core 读书笔记( 一、二章节)

写给大忙人看的 Java Core 读书笔记

随便记录一点零碎和不熟悉的知识点吧,好记性不如烂笔头。

第一章 基本的编程结构

1、数字与字符串转换

int a = 50;
String str =Integer.toString(a,22);  //radix基数(进制),2~36之间
a = Integer.parseInt(str,3);    //同样可以指定基数
//Double有同样的Double.toString Double.parseDouble

2、数组与数组列表复制

基本类型数组 和 包装类数组列表 之间转换需要显式循环或Stream

//数组复制
String[] oldStr = new String[]{"a", "b", "c"};
String[] newStr = Arrays.copyOf(oldStr, oldStr.length);
//数组列表复制
List<String> oldArr = new ArrayList<String>(Arrays.asList(oldStr));
List<String> newArr = new ArrayList<>(oldArr);

Arrays.deepToString();  //输出二维数组
//关于Arrays的算法等以后章节再详细写吧。。

在参数类型后加上 就变为了变长参数,变长参数必须写在参数列表最后一个,变长参数可以传入数组。

//至少有一个参数
public static double max(double first,double... values) {
    
}

第二章 面向对象编程

之前写过关于面向对象的复习博客:面向对象一 面向对象二
所以只记一下感觉这本书上说的比较好的地方。

1、静态变量和方法

final 修饰对象引用,代表该引用永远不变。类中的 final 变量必须初始化,定义时初始化,否则就要在所有的构造函数中加上初始化。
static 修饰类中元素,代表是属于该类的,所用该类的对象共享,修饰变量时,应注意多线程的问题。(更合适的描述词 class variable

代码名字描述
final实例变量初始化后不可更改
static静态变量类对象共享
static final静态常量final + static
static{}静态初始块第一次类加载时,执行静态初始块
static修饰方法静态方法不用运行在对象上的方法,只可访问本类实例变量

关于工厂方法,之前有写篇完全搬实验楼的博客:工厂模式

2、嵌套类

  • static 修饰的静态嵌套类:不可有外部嵌套类的引用,静态嵌套类中的属性方法,如果也有 static 修饰就是外部的类公有,否则就是私有。
  • static 修饰的内部类:可以有外部嵌套类的引用,即可以对外部类的属性进行修改,且只属于该实例化的类。

除了编译时常量外,内部类不能声明静态成员。如果静态类有静态成员,那关于 static 的含义将会模糊不清。
内部类会被编译成普通类,该类有一个指向外部实例的隐藏实例变量。

静态嵌套类很容易就可以想到,只是个类的生成接口。那么内部类可以对外部类进行操作会发生什么?

public class Club {
    private String clubName;
    public List<Member> members = new ArrayList<>();  //为了方便设为public
    public class Member{
        final String name;
        public Member(String name){
            this.name = name;
        }
        public void leave(){
            members.remove(this);
        }
        public String getClubName(){
            return clubName;
        }
    }
    public Member creatMember(String name){
        return new Member(name);
    }
    public Club(String clubName) {
        this.clubName = clubName;
    }
    public void addMember(Member member){
        members.add(member);
    }
    //内部类的外部类引用OuterClass.this
    public boolean belongsTo(Club club){
        return Club.this == club;
    }
}

public static void main(String[] args) {
    Club aClub, bClub;
    aClub = new Club("AcFun");
    bClub = new Club("BiLiBiLi");
    Club.Member liHua = aClub.creatMember("LiHua");
    bClub.addMember(liHua);
    System.out.println(bClub.members.get(0).getClubName());
    //输出为AcFun,放入bClub中仍然输入aClub名字
    bClub.members.get(0).leave();
    System.out.println(aClub.members.size());
    //输出为0,在一个类实例中影响了另一个类实例的元素
    //内部类有一个指向外部实例的隐藏实例对象
}    

3、文档注释

你可以(并且应该)为每个功能提供注释,每个注释放在它所描述的功能紧上面。注释以 /** 开始,以 */ 结束。
所有 /**…*/ 文档注释包含自由格式的文本,后面紧跟标签。 @author@param

文档注释位置描述
@param方法注释每个参数
@return方法注释返回值
@throws方法注释任何抛出的异常
/**直接写在这*/变量注释你只需要注释共有变量——通常是静态常量
@since通用注释从哪个版本开始有这个功能
@deprecated通用注释表示类、方法、变量不在用了,应提供一个替代者
@see添加链接可以引用类、方法、超链接、文本。引用方法时,使用#号分割类名与方法名。
@link添加链接与@see规则相同

IDEA文档模板:
类创建文档模板:

/**
 1. @description: TODO 
 2. @author ${USER}
 3. @Date ${DATE} ${TIME}
 4. @version 1.0
 */

在这里插入图片描述
文档快捷键模板需要自己添加:
在这里插入图片描述

  1. 右上角 + 号,先添加自定义组,再在组中添加模板。
  2. 左下角添加 contexts ,即生效范围,点 java 即可。
  3. Eidt vaiables 编辑自定义变量。
方法注释模板:
** 
 * 
 $params$
 * @return $returns$ 
 * @author $user$
 * @date $date$ $time$
 */
Name  Default value
params  groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {result+='* @param ' +params[i] + ((i < params.size() - 1) ? '\\n ' : '')};return result", methodParameters())methodParameters()) 
returns methodReturnType()
user    user()
date    date()
time    time()
类注释模板:
**
 * 
 * @author $user$
 * @date $date$ $time$
 * @version 1.0
 */
Name  Default value
user    user()
date    date()
time    time()

用的时候打出来定义的 * 回车就生成了,效果图如下。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值