7.28学习总结

来源:互联网 发布:怎么通过ip找到域名 编辑:程序博客网 时间:2024/04/28 00:00

7.28学习总结

包装类的享元模式

概念:如果在一个系统中存在多个相同的对象,那么只需要共享一份对象的拷贝,而不必为每一次使用创建新的对象。
作用:就是复用对象,以节省内存空间和对象创建时间。

public class Test{    public static void main(String[] args){        String num="6789";        String num1="6789";        String num2=new String("6789");        System.out.println(num1==num);        System.out.println(num2==num);        System.out.println(num2==num1);    }}
运行结果:truefalsefalse

这里写图片描述



java对象的序列化

1、功能:在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。

2、使用Java对象序列化,在保存对象时,会把其状态保存为一组字节,必须注意地是,对象序列化保存的是对象的”状态”,即它的成员变量。由此可知,对象序列化不会关注类中的静态变量。

3、 除了在持久化对象时会用到对象序列化之外,当使用RMI(远程方法调用),或在网络中传递对象时,都会用到对象序列化。Java序列化API为处理对象序列化提供了一个标准机制,该API简单易用。

包装类的常用方法

String类的常用方法:

1、length() 字符串的长度
2、charAt() 截取一个字符
3、toCharArray()转换为字符数组

public class Length {    public static void main(String[] args) {        String a="asdfghjkl";        System.out.println(a.length());//获取字符串的长度        char b=a.charAt(5);//返回第五个字符        int i=a.charAt(5);//返回第五个字符(从0开始)对应的asciiSystem.out.println(b);        System.out.println(i);        char[] c=a.toCharArray();//将字符串转换为字符数组        for(int j=0;j<a.length();j++){            System.out.print(c[j]+" ");        }    }}
运行结果:9h104a s d f g h j k l 

上述代码中包含了String常用的三个方法:length() 、charAt() 、toCharArray()。
length()方法用户获取字符串String a=”asdfghjkl”;的长度,为9;
charAt()方法用于截取一个字符串,如:
char b=a.charAt(5); 用于返回第五个字符h;
int i=a.charAt(5); 返回第五个字符(字符串下表从0开始)对应的ascii码104;
toCharArray()方法用于将字符串转换为字符数组;

4、equals()equalsIgnoreCase() 比较两个字符串
5、toLowerCase()/ toUpperCase() 大小写
6、startsWith()方法决定是否以特定字符串开始,
7、endWith()方法决定是否以特定字符串结束

public class Equal {    public static void main(String[] args) {        String a="qwertyuiop";        String b="QWERtyuiOP";        System.out.println(a.equals(b));//区分大小写        System.out.println(a.equalsIgnoreCase(b));//不区分大小写,可用于输入验证码        boolean q=a.startsWith("Q");//区分大小写        boolean q1=b.endsWith("p");//区分大小写        System.out.println(q);        System.out.println(q1);        System.out.println(a.toUpperCase());        System.out.println(b.toLowerCase());    }}

这里写图片描述
equal()方法不忽略大小写;equalIgnoreCase()方法忽略大小写。
toLowerCase()将字符串中所有的字符转换成小写
toUpperCase() 将字符串中所有的字符转换成大写

8、compareTo()compareToIgnoreCase() 比较字符串

package 实训;public class Compare {    public static void main(String[] args) {        String a="zxcvbnm";        String b="zxcVghjkl";        System.out.println(a.compareTo(b));        System.out.println(a.compareToIgnoreCase(b));        System.out.println(b.compareTo(a));        System.out.println(b.compareToIgnoreCase(a));    }}
运行结果:32-5-325

对方法进行分析:
compare()对字符串的比较方法是:对两个字符串的相同下标对应的单个字符依次进行比较,当遇到不同的字符时(该方法不忽略大小写,即a和A表示不同的字符),返回的是两个字符对应的ASCII码的值的差,差值是方法前面的字符对应的ASCII码减参数中对应字符的ASCII码。如上述代码:

a.compareTo(b);两个字符串中第四个字符不同,a中是”v”,b中是”V”,而这两个字符的ASCII码相差32,则第一个值返回32;而b.compareTo(a);则返回的是-32。

compareIgnoreCase()方法:与compare()的比较方法相同,但是这个方法忽略大小写,即a和A是相同的字符。

如上述代码中的a.compareToIgnoreCase(b);a和b两个字符串第五个字符不同,a中是”b”,b中是”g”,而这两个字符的ASCII码相差5,则第一个值返回-5;而b.compareToIgnoreCase(a);则返回的是5。

9、indexOf() 查找字符或者子串第一次出现的地方。
10、lastIndexOf() 查找字符或者子串是后一次出现的地方。
11、substring()截取字符串
12、concat() 连接两个字符串

package 实训;public class IndexOf {    public static void main(String[] args) {        String a="asdfgthjkldfgthjk";        a.indexOf(5);        System.out.println(a.indexOf("th"));//查找字符串"th"第一次出现的地方        System.out.println(a.lastIndexOf("th"));//查找字符串"th"最后一次出现的地方        System.out.println(a.substring(5, 10));//两个参数,表示从5开始到10结束的子串        System.out.println(a.substring(5));//一个参数,表示截取从该下标开始,直到字符串结尾的子串        System.out.println(a.concat("qwer"));//将参数中的字符串连接到字符串a的后面        System.err.println();    }}

运行结果:
这段代码中包含了String的三个常用方法:indexOf() 、substring()、concat() 。
代码中a.indexOf(“th”)),返回了a字符串中第一次出现”th”的”t”对应的下标5;

13、replace() 替换
14、trim() 去掉起始和结尾的空格
15、split(String str)//将str作为分隔符进行字符串分解

public class Repalce {    public static void main(String[] args) {        String a=" asd fgbv cxzasd ";        System.out.println(a.trim());        //a.replace("bvc", "out");        System.out.println(a.replace("bvc", "out"));        System.out.println(a.replace("asd", "out"));//替换的字符中不能有空格,替换时同样是将字符串中所有指定的子串都被替换掉        System.out.println(a.replaceAll("asd", "q"));//将字符串中所有的第一个参数中的子串都替换为指定的第二个字符串        System.out.println(a.replaceFirst("asd", "r"));//将字符串中第一次出现的第一个参数中的子串都替换为指定的第二个字符串        String[] b=a.split(" ");        System.out.println(b);        System.out.println(Arrays.toString(b));    }}

这里写图片描述
分析:
a.replace(“asd”, “out”);将字符串中的”asd”子串替换成”out”子串,注意在被替换的子串中不能有空格,否则替换失败。如上述代码:
String a=” asd fgbv cxzasd “;
System.out.println(a.replace(“bvc”, “out”));
将”bvc”替换成”out”失败。
a.replaceAll(“asd”, “q”);将字符串中所有的”asd”全部替换成”q”;
a.replaceFirst(“asd”, “r”);将字符串中第一个的”asd”替换成”r”。


Integer包装类:

两个属性:

MIN_VALUE = 0x80000000;
MAX_VALUE = 0x7fffffff;

常用方法

1、byteValue():取得用byte类型表示的整数

public class Inte {    public static void main(String[] args) {        Integer MIN_VALUE = 0x80000000;        Integer MAX_VALUE = 0x7fffffff;        Integer i=0x8000000f;        Integer j=0x000000f0;        System.out.println(MIN_VALUE.byteValue());//取低8为的值,为0        System.out.println(MAX_VALUE.byteValue());//-1        System.out.println(i.byteValue());//15        System.out.println(j.byteValue());//-16    }}运行结果:0-115-16

byteValue()返回byte类型,只取数值的低八位,并转换成十进制的数。
例如程序中的i=0x8000000f,低八位为0f,转换成十进制为15。

2、compareTo/compare 比较大小
这里写图片描述
分析: 程序中,i=3,j=5,k=5; i.compareTo(j);返回值应为-1;j.compare(k,i);因为k>i,所以返回1。 j.compareTo(k);因为j=k,返回0。



常用的debug模式:

1、打印,执行到哪处,通过打印语句查看是否执行;(最笨的办法)
2、Logger:日志的形式,可控制打印的级别
3、Debug:(比较常用)调试程序:在程序中设置一个断点,然后进入debug模式(界面包含三块:栈空间、程序代码、变量),按F6使程序一句一句执行,以便找出程序中的错误。



Markdown笔记

快捷键

  • 加粗 Ctrl + B
  • 斜体 Ctrl + I
  • 引用 Ctrl + Q
  • 插入链接 Ctrl + L
  • 插入代码 Ctrl + K
  • 插入图片 Ctrl + G
  • 提升标题 Ctrl + H
  • 有序列表 Ctrl + O
  • 无序列表 Ctrl + U
  • 横线 Ctrl + R
  • 撤销 Ctrl + Z
  • 重做 Ctrl + Y

Markdown及扩展

Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。 —— [ 维基百科 ]

使用简单的符号标识不同的标题,将某些文字标记为粗体或者斜体,创建一个链接等,详细语法参考帮助?。

本编辑器支持 Markdown Extra ,  扩展了很多好用的功能。具体请参考[Github][2].

表格

Markdown Extra 表格语法:

项目 价格 Computer $1600 Phone $12 Pipe $1

可以使用冒号来定义对齐方式:

项目 价格 数量 Computer 1600 元 5 Phone 12 元 12 Pipe 1 元 234

定义列表

Markdown Extra 定义列表语法:
项目1
项目2
定义 A
定义 B
项目3
定义 C

定义 D

定义D内容

脚注

生成一个脚注1.

目录

[TOC]来生成目录:

  • 28学习总结
    • 包装类的享元模式
    • java对象的序列化
      • 包装类的常用方法
        • String类的常用方法
      • Integer包装类
        • 两个属性
        • 常用方法
    • 常用的debug模式
    • Markdown笔记
      • 快捷键
      • Markdown及扩展
      • 表格
      • 定义列表
      • 脚注
      • 目录
      • 数学公式
      • UML 图

数学公式

使用MathJax渲染LaTex 数学公式,详见[math.stackexchange.com][1].

  • 行内公式,数学公式为:Γ(n)=(n1)!nN
  • 块级公式:

x=b±b24ac2a

更多LaTex语法请参考 [这儿][3].

UML 图:

可以渲染序列图:

Created with Raphaël 2.1.0张三张三李四李四嘿,小四儿, 写博客了没?李四愣了一下,说:忙得吐血,哪有时间写。

或者流程图:

Created with Raphaël 2.1.0开始我的操作确认?结束yesno

  1. 这里是 脚注内容. ↩