教材学习内容总结

第八章

String类

Java专门提供了用来处理字符序列的String类。

String类在java.lang包中,由于java.lang包中的类被默认引入,因此程序可以直接使用String类。

需要注意的是Java把String类声明为final类,因此用户不能扩展String类,即String类不可以有子类。

可以使用String类声明对象并创建对象,例如:

String s = new String("we are students");

String t = new String("we are students");

用户无法输出String对象的引用:

Syste.out.println(s);

输出的是对象的实体。

例如:

char a[] = {'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};
String s = new String(a,2,4);
 相当于
 String s = new String("贰叁肆伍");
String 类的常用方法:
  • public int length():获取一个字符串的长度

  • public boolean equals(String s):判断当前String对象的字符序列是否与参数s指定的String对象的字符序列相同

  • public boolean startsWith(String s)

    判断当前String对象的字符序列前缀是否是参数指定的String对象s的字符序列

  • public int compareTo(String s):按字典序与参数s指定的字符序列比较大小。

  • 5.public boolean contains(String s):String对象调用contains方法判断当前String对象的字符序列是否包含参数s的字符序列

  • public int indexOf (String str):String对象调用方法从当前String对象的字符序列的0索引位置开始检索首次出现str的字符序列的位置,并返回该位置。如果没有检索到,该方法返回的值是–1

  • public String trim() :得到一个新的String对象,这个新的String对象的字符序列是当前String对象的字符序列去掉前后空格后的字符序列。

符串与基本数据的相互转化

Java.lang包中的Integer类调用其类方法:

public static int parseInt(String s)

可以使用String 类的类方法:
   public static String valueOf(byte n)
public static String valueOf(int n)
public static String valueOf(long n)
public static String valueOf(float n)
public static String valueOf(double n)
对象的字符串表示

所有的类都默认是java.lang包中Object类的子类或间接子类。

Object类有一个

public String toString()

  • String 类的构造方法:

    String(char[]);

    String(char[],int offset,intlength)分别用字符数组中的全部字符和部分字符创建字符串对象

  • 将String对象的部分字符序列存放到数组中的方法:

    public void getChars(int start,int end,char c[],int offset )

  • 将String对象的字符序列存放到数组中的方法

    public char[] toCharArray()

  • String(byte[])用指定的字节数组构造一个字符串对象。

  • String(byte[],int offset,int length) 用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象。

  • public byte[] getBytes()使用平台默认的字符编码,将当前String对象的字符序列存放到字节数组,并返回数组的引用。

  • public byte[] getBytes(String charsetName)使用参数指定字符编码,将当前String对象的字符序列存放到字节数组,并返回数组的引用。

第十五章

泛型

泛型(Generics),其主要目的是可以建立具有类型安全的集合框架,如链表、散列映射等数据结构。

可以使用“class 名称<泛型列表>”声明一个类,为了和普通的类有所区别,这样声明的类称作泛型类,如:

class People<E>

其中People是泛型类的名称,E是其中的泛型,也就是说我们并没有指定E是何种类型的数据,它可以是任何对象或接口,但不能是基本类型数据。

泛型类声明和创建对象时,类名后多了一对“<>”,而且必须要用具体的类型替换“<>”中的泛型。例如:

   Cone<Circle> coneOne;
coneOne =new Cone<Circle>(new Circle());

LinkedList泛型类创建的对象以链表结构存储数据,习惯上称LinkedList类创建的对象为链表对象。例如:

LinkedList mylist=new LinkedList();

创建一个空双链表。

add(E obj) 向链表依次增加节点

LinkedList泛型类常用方法

  • public boolean add(E element) 向链表末尾添加一个新的节点,该节点中的数据是参数elememt指定的数据。

    - public void add(int index ,E element) 向链表的指定位置添加一个新的节点,该节点中的数据是参数elememt指定的数据。
  • public void clear() 删除链表的所有节点,使当前链表成为空链表。
  • public E remove(int index) 删除指定位置上的节点。

    - public boolean remove(E element) 删除首次出现含有数据elemen的节点。

    - public E get(int index) 得到链表中指定位置处节点中的数据。
  • public E getFirst() 得到链表中第一个节点中的数据。

    -public E getLast()得到链表中最后一个节点中的数据。
  • public E removeFirst() 删除第一个节点,并返回这个节点中的数据。

链表

public static void shuffle(List<E> list) 将list中的数据按洗牌算法重新随机排列。

static void rotate(List<E> list, int distance) 旋转链表中的数据。

public static void reverse(List<E> list) 翻转list中的数据

堆栈

public E push(E item);实现压栈操作

public E pop();实现弹栈操作。

public boolean empty();判断堆栈是否还有数据。

public E peek();获取堆栈顶端的数据,但不删除该数据。

public int search(Object data);获取数据在堆栈中的位置

代码调试中的问题和解决过程

教材中代码调试有问题先去https://shimo.im/doc/1i1gldfsojIFH8Ip/看看,如果别人没有提出相同问题,可以编辑文档添加,然后把自己提出的问题复制到下面:

  • 问题1:编译XXX.java文件提示使用了未经检验或不安全的操作

  • 问题1解决方案:通过网上搜索得知

JAVA是一门安全性比较高的语言,它在编译之类要进行类型等一系列的检查。如果你使用了注解就可以告诉编译器不用检查,这样子就可以避过编译时期间的安全检查,这样子的效率会提高 。但同时 安全性就大打折扣了。

方法一: 在main方法面前加@SuppressWarnings("unchecked")

方法二:就是采用泛型。ArrayList<String> list = new ArrayList<String>();

例如:

import java.util.*;

public class ListDemo
{
//@SuppressWarnings("unchecked")
public static void main(String[] args)
{
StringBuilder buf = new StringBuilder("美丽"); //字符串生成器
buf.append("中"); // 输出: 美丽中
buf.append("国"); //输出:美丽中国
buf.insert(1,"达"); //输出:美达丽中国
buf.insert(0,"欢迎"); //输出:欢迎美达丽中国
System.out.println(buf);
//ArrayList list = new ArrayList();
ArrayList<String> list = new ArrayList<String>();
list.add("中");
System.out.println(list);
}
}
  • 问题2:编译XXX完成,运行程序时提示:NO X11 DISPLAY variable was set,but this program perforemed an operation which requires it.

  • 问题2解决方案:翻译为没有设置X11 DISPLAY变量,但该程序执行了需要它的操作。

    网上说大致说法为没有配置可视图形化界面变量,我使用的是Windows下子系统,所以只有命令行不存在可视化界面,如需要界面需要调用第三方软件,具体情况可使用虚拟机查看。
  • 问题3:编译XXX完成,运行是提示:Exception in thread "main" java.lang.NoSuchMethodError:Student.(ILjava/lang/String;)

    -
  • 问题3解决方案:提示有同类名的类在同一个包或工程中,改变类名,保存即可正常运行。

代码托管

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 1/4 10/10
第二周 300/500 1/5 10/20
第三周 800/1300 1/6 20/40
第四周 700/2000 2/8 20/60
第五周 1100/ 3100 2/10 30 /90
第六周 1100 /4200 1/ 11 15 /105
第七周
第八周
  • 计划学习时间:15小时

  • 实际学习时间:15小时

  • 改进情况:

参考资料

20165231 2017-2018-2 《Java程序设计》第6周学习总结的更多相关文章

  1. 学号 20175212 《Java程序设计》第九周学习总结

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

  2. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  3. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  4. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  5. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  6. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  7. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  8. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  9. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  10. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

随机推荐

  1. Linux下进程与线程的区别及查询方法

    在平时工作中,经常会听到应用程序的进程和线程的概念,那么它们两个之间究竟有什么关系或不同呢?一.深入理解进程和线程的区别 1)两者概念 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进 ...

  2. 16、计算1加到100用两个定义值count=1、sum=0

    #!/user/bin/python# -*- coding:utf-8 -*-count = 1sum = 0while count <= 100: sum = sum + count cou ...

  3. nginx跨域的简单应用

    nginx跨域的简单应用 要求:1.浏览器访问print.qianbaihe.wang/zt 直接调转至 www.flybirdprint.com/zt,浏览器显示域名不变. server { lis ...

  4. JAVA-Clone 对象拷贝

    JAVA 中对象的赋值是复制对象的引用,即复制引用 public static void main(String[] args) { User user = new User(1,"asds ...

  5. synchronized 和lock的区别

    synchronized 是什么时候释放? 1.获取锁的线程执行完代码2.线程执行出现异常 synchronized 的缺陷? 1.Lock类可以主动释放锁.2.synchronized 是被动. R ...

  6. 解决CDN传统方法引入Iview icon 不显示问题

    因为需要字体文件,可以在github上下载. 将文件下载之后放到fonts文件夹下,fonts文件夹要与Iview.css在同级目录

  7. redis注册成window服务 标签: redis

    注册服务 redis-server.exe –service-install redis.windows.conf 删除服务 redis-server –service-uninstall 开启服务 ...

  8. shop++改造之Filter类

    基于shop++源码进行商城改造.本来想大展手脚,结果一入手.发觉瞬间淹没了我的才华,sql语句也得贼溜没啥用. 不得不说这个商城源码价值很高,封装的很精屁. 下面是我第一天入手的坑. 数据库建好了表 ...

  9. redis互斥锁简易设计原理【原】

    redis互斥锁设计 方式一: 使用 set(arg1,arg2,arg3,arg4,arg5) 绿线部分代码 //如果不存在就设置,且设置成功60秒后key自动失效,成功会返回字符串"OK ...

  10. web.xml之<context-param>与<init-param>的区别与作用【转】

    引用自-->http://www.cnblogs.com/hzj-/articles/1689836.html <context-param>的作用:web.xml的配置中<c ...