java的学习笔记

判断java字符数组里下标i的数是否为字母

   Character.isLetter(数组名[i]);

判断java字符数组里下标i的数是否为数字:  

  Character.isDigit(数组名[i]);

异常断点(如空指针异常):

  breakpoints->add java exception breakpoint 输入:NullPointerException

使用断点三点建议:

  1. 不要使用System.out.println作为调试工具
  2. 把所有涉及到的组件日志级别激活并使用
  3. 使用日志分析器来读取日志

java判等(equals 和 ‘==’):

  equals:以字符串为例:用来比较两个字符串是否相等,相等返回true,不等返回false。不用考虑两个变量在堆中 存放的不同位置。

  equals 不能用来判断数据类型的大小。

  '==':如果是通过new了一个实例String对象,那么这两个实例对象在堆中的位置是不同的,所以这两个对象用‘==’比较的返回值是false。

java 正则表达式:

    正则基本用法:\b  单词边界    \d 匹配一个数字字符 \w 表示字符类(包括大小写字母,数字) \s 空白字符 \单词大写与意义相反之

pattern类:

  Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建,

  但可以通过Pattern.complie(String regex)简单工厂方法创建一个正则表达式,    

  Pattern p=Pattern.compile("\\w+");

  p.pattern();//返回 \w+

  Pattern.split(CharSequence input)方法,用于分隔字符串,并返回一个String[]

  Pattern p=Pattern.compile("\\d+");

  String[] str=p.split("我的QQ是:456456我的电话是:0532214我的邮箱是:aaa@aaa.com");
  结果:str[0]="我的QQ是:" str[1]="我的电话是:" str[2]="我的邮箱是:aaa@aaa.com"

  Pattern.matcher(String regex,CharSequence input)是一个静态方法,用于快速匹配字符串,该方法适合用于只匹配一次,且匹配全部字符串.    

  Pattern.matches("\\d+","2223");//返回true

  Pattern.matches("\\d+","2223aa");//返回false,需要匹配到所有字符串才能返回true,这里aa不能匹配到

  Pattern.matches("\\d+","22bb23");//返回false,需要匹配到所有字符串才能返回true,这里bb不能匹配到
      
matches类:
  Pattern.matcher(CharSequence input)返回一个Matcher对象.
  Matcher类的构造方法也是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例.必须实例化
  Pattern p=Pattern.compile("\\d+");

  Matcher m=p.matcher("22bb23");

  m.pattern();//返回p 也就是返回该Matcher对象是由哪个Pattern对象的创建的
  Integer类中有静态方法toBinaryString(int i)方法,此方法返回int变量的二进制表示的字符串

  同理,Integer类中也提供了toHexString(int i)方法和toOctalString(int i)方法来分别返回int变量的16进制表示和8进制表示字符串.

堆栈理解:     

  栈:一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配

  堆: 堆内存用于存放由new创建的对象和数组

  按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,·和堆式的. 

  从堆和栈的功能和作用来通俗的比较,堆主要用来存放对象的,栈主要是用来执行程序的.

  从Java的这种分配机制来看,堆栈又可以这样理解:堆栈(Stack)是操作系统在建立某个进程时或者线程(在支持多线程的操作系统中是线程)

  为这个线程建立的存储区域,该区域具有先进后出的特性。 

  栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,

  缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。 

 线程:

      线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,

  只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

什么时候使用多线程?     

  当多个任务可以并行执行时,可以为每个任务启动一个线程。

java io流的概念:

  把流理解成一个中间介质,所谓的input和out是针对这个介质来说的,input是进入这个介质,out是这个介质输出。

  流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,

  根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

举个例子:

  比如你家的水龙头的管道就是一个流:流又分为输入输出流,输入流就是你家水龙头抽水库水的那头

   (FileInputStream:将水抽到管道里面),输出流就是你家水龙头流到你家大水缸的那头(FileOutputStream:将水流到缸里)。

  现在有个A.txt文件,你要读取里面的信息,就相当于水龙头抽水库水到管道(FileInputStream),然后读取完后写入到另一个文件

  里面(FileOutputStream),就是相当于水龙头将抽到水后流到大水缸。

处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。

io流的分类:

  根据处理数据类型的不同分为:字符流和字节流

  根据数据流向不同分为:输入流和输出流

       对io流详细理解:http://blog.csdn.net/zhaoyanjun6/article/details/54292148

集合类:

  Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类。但是却让其被继承产生了两个接口,就是Set和List。

  Set中不能包含重复的元素。List是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式。

  Map是Java.util包中的另一个接口,它和Collection接口没有关系,是相互独立的,但是都属于集合类的一部分。Map包含了key-value对。

  Map不能包含重复的key,但是可以包含相同的value。

Iterator,所有的集合类,都实现了Iterator接口,这是一个用于遍历集合中元素的接口,主要包含以下三种方法:
  1.hasNext()是否还有下一个元素。
  2.next()返回下一个元素。
  3.remove()删除当前元素。

For-Each循环:

      For-Each循环也叫增强型的for循环,或者叫foreach循环。

   For-Each循环是JDK5.0的新特性(其他新特性比如泛型、自动装箱等)。

   For-Each循环的加入简化了集合的遍历。

规则:

     for(type element: array)

  {

        System.out.println(element);

  }

pojo:

  具有一部分getter/setter方法的那种类就可以称作POJO

JavaBean可分为两种:

  一种是有用户界面(UI,User Interface)的JavaBean;

  还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的JavaBean。

  JSP通常访问的是后一种JavaBean。

Integer和int的区别:

  1、Integer是int提供的封装类,而int是Java的基本数据类型;
  2、Integer默认值是null,而int默认值是0;
  3、声明为Integer的变量需要实例化,而声明为int的变量不需要实例化;
  4、Integer是对象,用一个引用指向这个对象,而int是基本类型,直接存储数值。 

posted @ 2017-12-03 17:12  学习使我快乐Y  阅读(266)  评论(1编辑  收藏  举报