JAVA学习笔记(三)

@SuppressWarnings("resource")是用来压制资源泄露警告的。比如使用io类,最后没有关闭。
Set集合特点:
1)无序,不随机
2)元素唯一
3)没下标
注意:Collection List Set 是接口
注意:因为Set 没有下标,所以取值是不能用for,只能用迭代器
HashSet: 内部结构是哈希表,所以元素唯一,无序,没下标。
TreeSet: 内部是二叉树,元素可以进行比较,可以按自然顺序比较,也可以由程序员自定义比较方式,没下

标。
LinkedHashSet:内部结构是哈希表及链表组成,所以有序,元素唯一,没下标。
HashSet:
HashSet<String> ss = new HashSet<String>();
ss.add("a");
ss.add("k");
ss.add("d");
ss.add("k");

Iterator<String> its = ss.iterator();
while (its.hasNext()) {
System.out.println(its.next());
}

结果:无序的
LinkedHashSet:
LinkedHashSet<String> s = new LinkedHashSet<String>();
s.add("a");
s.add("g");
s.add("d");
s.add("g");

Iterator<String> it = s.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
结果:a g d 有序(按存入的顺序取出)

Map接口特点:有键(key),值(value)且成双出现。
Map接口中的方法
1.添加 V put(K key, V value)
2.删除 V remove(Object key)
void clear()
3.判断 boolean isEmpty()
boolean containsKey(Object key)
boolean containsValue(Object value)
4.获取 V get(Object key)
int size()
Set<K> keySet()
Map取值
//不重,没序,没下标,没迭代,值成双出现,key和value都可能为空(可以同时为空),如果key相同,会覆

盖value
Map<String,String> map = new HashMap<String,String>();
map.put("1","aa");
map.put("2","bb");
map.put("3","cc");
map.put("4","ff");
map.put("5","ff");
//map.get("5");//一个一个取
Set<String> set = map.keySet();//当前set中存的都是key
Iterator <String> it =set.iterator();
while(it.hasNext()){
String key = it.next();
String value = map.get(key);
System.out.println("key="+key+",value="+value);
}
HashMap 和HashTable的区别
HashMap:线程不安全,速度快,允许存放null键,null值。
Hashtable:线程安全,速度慢,不允许存放null键,null值,已被HashMap替代。
TreeMap:对键进行排序,排序原理与TreeSet相同。

For循环的新用法:
ArrayList<String> list = new ArrayList<String> ();
list.add("a");
list.add("b");
//1)普通for
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
//2)增强for
for(String temp : list)
{System.out.println(temp);
}
注意:1)增强for要和泛型一起使用
2)增强for没有下标

为什么要有包装类:方便我们操作基本数据类型中的数据
注意:
char(字符型) Character
int(整型) Integer
其余的 首字母大写
基本数据类型------------字符串
1)+字符串联接符
int i = 1;
String str = i + "";
2)String 里有方法
String str2=String.valueOf(i);
字符串-------基本数据类型
String str3="a";
int a=Integer.parseInt(str3);
注意:字符串必须是数字,否则报错NumberFormatException
包装类------ 基本数据类型
Integer itsss = new Integer("20");
int age = itsss.intValue();

自动装箱与自动拆箱
以前: int m = 4;
int n = 5;
int b = m + n;
如果:Integer m= new Integer(4);
int b=m.intValue()+5; --->m由包装类变成基本数据类型后+5
现在 :JDK5.0以后新出功能
Integer p=4;//自动装箱(基本数据类型转成包装类)
int b=p+5; //自动拆箱(包装类转成基本数据类型)
List<Integer> list = new ArrayList<Integer>();
list.add(1);//自动装箱(基本数据类型转成包装类)
好处:方便程序编写。
包装类中的equals( )方法
包装类重写Object中的equals( )方法 ,比较的是数值是否相等
Integer a1= new Integer("20");
Integer a2= new Integer(20);
System.out.println(a1.equals(a2));//true

包装类中的compareTo( )方法
public int compareTo(Integer anotherInteger)
Integer a1= new Integer("40");
Integer a2= new Integer(30);
System.out.println(a1.compareTo(a2));
a1的值==a2 的值返回0
a1的值<a2 的值返回负数
a1的值>a2 的值返回正数

Object类:是所有类的根类,本类中的所有方法,所有类都继承。
equals与==
1)基本数据类型的比较:
3==3 true(比较的是值)
2)对象的比较:
New Person( ) == New Person( ) false(比较的是内存地址)
3)对象的比较:
New Person( ).equals( New Person( ) ) false(比较的是内存地址)
4)String 类中的equals,重写了Object中的equals,比较的是字符串的内容
==比较的是地址

hashCode
返回该对象的哈希码值:
New Person( ).hashCode() -->int 值25860399 对象的地址10进制的
Integer.toHexString(25860399)->10进制数转成16进制数
类似于[email protected]
哈希码值就是对象的地址值。
getClass
对象名.getClass();得到当前对象的包名及类名

toString
ForTest f6 = new ForTest();
System.out.println(f6); //f6 相当于f6.toString(),它默认调用Object类中的toString()方法
注意:
如果我们在ForTest 类中重写toString(),那么System.out.println(f6); 后输出的值是重写方法里的值。
1)常量池(直接赋值的):
String a = “abc”; -->在池中创建”abc”串
a=“bcd”--->“在池中创建”bcd”串
a = “abc”; --->用池中已创建好的”abc”串
2)String a = new String(“aa”);---->“aa”不在池中在对象中

String类常用方法
1.获取字符串的长度int length()
2.根据位置获取字符char charAt(int index)
3.根据字符获取在字符串中第一次出现的位置
int indexOf(String str)
int indexOf(String str, int fromIndex) 从指定位置开始查找
4.根据字符获取在字符串中第一次出现的位置
int lastIndexOf(String str)
int lastIndexOf(String str, int fromIndex) 从指定位置开始查找
5.获取字符串中一部分字符串,也叫子串
String substring(int beginIndex)
String substring(int beginIndex, int endIndex) beginIndex - 起始索引(包括) endIndex -

结束索引(不包括)。
6.转换
1)字符串转换成字符串数组(切割)
String[] split(String regex) ,# 空格 \ .
2)字符串转换成字符数组
char[] toCharArray()
3)字符串转换成字节数组
byte[] getBytes()
4)将字符串中的字符全部大写
String toUpperCase()
5)将字符串中的字符全部小写
String toLowerCase()
6)将字符串中的内容进行替换
String replace(char oldChar, char newChar)
7)将字符串两端空格去掉
String trim()
8)字符串连接
String concat(String str)
9)将基本类型变成字符串
static String valueOf(Object obj) 100变成字符串
7.判断
1)比较字符串内容:
boolean equals(Object anObject)
2)不考虑大小写比较字符串内容:
boolean equalsIgnoreCase(String anotherString)
3)字符串是否包含指定字符串
boolean contains(String s)
4)字符串是否以指定字符串开头,以指定字符串结尾
boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开始。
boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结束 (区分大小写)
8.比较
int compareTo(String anotherString)

StringBuffer类
是字符串缓冲区,串缓冲区的作用就是为了方便操作字符串
StringBuffer类特点
1.长度可变
2.可以存储不同类型的数据
3.接收不同类型数据,最终要转成字符串进行使用
StringBuffer sb = new StringBuffer("aa");
System.out.println(sb.toString());
4.可对字符串进行修改
StringBuffer构造方法
StringBuffer sb = new StringBuffer( ); 缓冲区是空的,长度是0
StringBuffer sb = new StringBuffer("aa"); 缓冲区不是空的,长度是2

StringBuffer方法
1.添加
StringBuffer append(boolean b)
StringBuffer insert(int offset, boolean b)
2.删除
public StringBuffer delete(int start, int end) 不包括end
StringBuffer deleteCharAt(int index) 删除某一个位置上的字符
3.查找
char charAt(int index)查找某一个位置上的字符
int indexOf(String str)查找指定字符串的下标
int lastIndexOf(String str)
4.修改
StringBuffer replace(int start, int end, String str) 不包括end
void setCharAt(int index, char ch)
5.反转
StringBuffer reverse()
finalize()
垃圾回收器在进行回收之前要调用的方法,此方法一般用于释放资源。
System.gc():建议垃圾回收器干活。一般不手动使用。
Math类
static double ceil(double a) 返回大于参数的最小整数
static double floor(double a)返回小于参数的最大整数
static int round(float a)四舍五入
static double pow(double a, double b) a的b次方
static double random()返回带正号的 double 值,该值大于等于0.0且小于1.0。
System类
返回以毫秒为单位的当前时间。
static long currentTimeMillis()
static void exit(int status)终止当前正在运行的 Java 虚拟机。 status=0正常、1异常退出
static void gc()“建议”运行垃圾回收器。

Date
当前系统时间。位置于java.util包
方法:
new Date(); //得到系统的当前时间 显示格式不是中国方式
new Date(long date); //通过毫秒数得到年月日,分时秒
long getTime() //得到当前毫秒数
System.currentTimeMillis(); //得到当前毫秒数
注意:日期对象与毫秒之间的转换
1)日期对象--转换----》毫秒
Date d = new Date();
long lo = d.getTime();
2)毫秒--转换----》日期对象
Date d =new Date(lo);
DateFormat
格式化时间用的(格式的风格是固定的)位置于java.text包
这个DateFormat是一个抽象类,不能创建对象
格式器的获得:
DateFormat.getDateInstance();这种格式器只有年-月-日
DateFormat.getDateTimeInstance();//年-月-日 时:分:秒
DateFormat.getDateInstance(int 参数)://通过参数来指定风格
例子:
Date d =new Date();
DateFormat df = DateFormat.getDateInstance();//2016-10-27 Thu Oct 27 10:57:57

CST 2016------format------->2016-10-27
String dateStr=df.format(d);
System.out.println(dateStr);

DateFormat df1 = DateFormat.getDateTimeInstance();//2016-10-27 10:36:38 Thu Oct

27 10:57:57 CST 2016------format------->2016-10-27 10:36:38
String dateStr1 = df1.format(d);
System.out.println(dateStr1);

DateFormat df2 = DateFormat.getDateInstance(DateFormat.FULL);//2016年10月27日 星

期四
String dateStr2= df2.format(d);
System.out.println(dateStr2);

DateFormat df3 = DateFormat.getDateInstance(DateFormat.LONG);//2016年10月27日
String dateStr3= df3.format(d);
System.out.println(dateStr3);

DateFormat df4 = DateFormat.getDateInstance(DateFormat.SHORT);//16-10-27
String dateStr4= df4.format(d);
System.out.println(dateStr4);

DateFormat df5 = DateFormat.getDateInstance(DateFormat.MEDIUM);//2016-10-27
String dateStr5= df5.format(d);
System.out.println(dateStr5);

SimpleDateFormat
格式化时间用的(格式的风格是自定义的)位置于java.text包。通过参数来指定格式

Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yy--MM--dd HH-mm-ss");
String str = sdf.format(d);
System.out.println(str);
结果:16--03--05 09-20-22

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = sdf.parse("2009-06-14 09:20:22");
把字符串类型的日期转成Date类型的日期

Calendar
日历 位置于java.util包
是一个抽象类,不能创建对象、
得到日历:
Calendar rightNow = Calendar.getInstance();
System.out.println(rightNow);
用日历中的方法,得到值:
int year = rightNow.get(Calendar.YEAR);//取日历中的年
System.out.println(year);

int month = rightNow.get(Calendar.MONTH);//取日历中的月 从0开始
System.out.println(month);

int date = rightNow.get(Calendar.DAY_OF_MONTH);//取日历中的日 1)DAY_OF_MONTH 2)

DATE 都是从1开始,两个参数是一样的
System.out.println(date);

int weekday = rightNow.get(Calendar.DAY_OF_WEEK);//取日历中的星期几 从周日 开始

算为1 星期4,就是5
System.out.println(weekday);

时间: 2024-10-06 21:37:37

JAVA学习笔记(三)的相关文章

JAVA学习笔记(三十二)- 字符流 FileReader &amp; FileWriter

标题 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream;

JAVA学习笔记(三十五)- 随机读写文件 RandomAccessFile

RandomAccessFile类 /* * RandomAccessFile类,随机读写文件 * * 数据分段要有规律,每段大小相等,可以将每段数据设置为较大的值,足以存在每一个段的数据 * */ public class Test04 { public static void main(String[] args) throws IOException { //writeFile(); readFile(); } // 写入数据 public static void writeFile()

JAVA学习笔记(三十四)- 字节打印流 PrintStream

PrintStream字节打印流 import java.io.BufferedReader; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintStream; import java.io.PrintWriter; import java.io.Reader; /* * Pri

黑马程序员——JAVA学习笔记三(面向对象)

1,    面向对象设计程序(oriented object pragraming)  ,其程序是有对象组成,只要对象能满足要求,就不需要关心其功能的具体实现.面向对象的特征:封装(encapsulation)继承(inherence)多态(polymorphism). 2,    类是对事物的属性和行为的描述,构造对象的模板和蓝图.对象是类的实例,它具有三个特征:行为(behavior)状态(state) 对象标示(identity如何辨别具有相同状态和行为的对象).成员函数默认有一个隐含参数

Java学习笔记三---unable to launch

环境配置好后,在eclipse下编写HelloWorld程序: ①创建新工程 ②创建.java文件,命名为HelloWorld ③在源文件中添加main方法,代码如下: public void main(String[] args){ String.out.println("HelloWorld!"); } ④点击运行按钮,弹出如下的信息: The selection cannot be launched,and there are no recent launnches. ⑤检查代码

JAVA学习笔记(三十三)- 字节流转换为字符流

将字节流转换为字符流 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; /* * InputStreamRead

Java学习笔记三(对象的基本思想一)

1 面向对象编程(OOP)的基本思想 面向对象就是描述对象和对象之间的相互作用:和面向过程编程的区别:面向过程编程时首先确定算法,再确定数据结构:OOP是先确定数据结构,在确定运算. 对象有两个特征:状态和行为:把相似的对象规化为一类,在软件中类就是一个模板,它定义了通用于一个特定种类的所有对象的所有状态和方法: 类是创建对象的模板,对象的类的实例: 2 类的入口函数和构造函数 (1)类的入口函数定义为 public static void main(Sting [] args) 当一个类中有m

Java学习笔记三——数据类型

前言 Java是强类型(strongly typed)语言,强类型包含两方面的含义: 所有的变量必须先声明后使用: 指定类型的变量只能接受预支匹配的值. 这意味着每一个变量和表达式都有一个在编译时就确定的类型. Java数据类型分为两大类:基本类型和引用类型. 基本数据类型 Java的基本数据类型包括:boolean.字符型和数值类型. 数值类型包括:整型和浮点类型 boolean 大小:Java规范并没有强制指定boolean类型的变量所占内存大小 范围:true或false 例子:boole

JAVA学习笔记(三十九)- 线程优先级

线程优先级 /* * 线程优先级,范围[1,10] * 不同优先级的线程获取执行的机会不同,优先级越高,执行机会越大 * * 对比不同优先级的线程被执行的机率 */ public class Test05 { public static void main(String[] args) { System.out.println("最大优先级:" + Thread.MAX_PRIORITY); System.out.println("最小优先级:" + Thread.

JAVA学习笔记(三十六)- 文件的拆分和合并

文件的拆分和合并 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.SequenceInputStream; import java.util.Enumeration; import java.util.Vector; /* * 文件的拆分和合并 */ public class