1.BigInteger和BigDecimal类

  1. package cn.jxufe.java.chapter5.demo01;
  2.  
  3. import java.math.BigInteger;
  4.  
  5. public class TestBigInterger {
  6.  
  7. public static void main(String[] args) {
  8. // TODO Auto-generated method stub
  9. BigInteger a = new BigInteger("9223372036854775807");
  10. BigInteger b = new BigInteger("2");
  11. BigInteger c = a.multiply(b);
  12. System.out.println(c);
  13. }
  14.  
  15. }

  1. package cn.jxufe.java.chapter5.demo01;
  2.  
  3. import java.math.BigDecimal;
  4. import java.math.BigInteger;
  5.  
  6. public class TestBigInterger {
  7.  
  8. public static void main(String[] args) {
  9. // TODO Auto-generated method stub

  10. BigDecimal e = new BigDecimal(1.0);
  11. BigDecimal f = new BigDecimal(3);
  12. BigDecimal g = e.divide(f, 20, BigDecimal.ROUND_UP);
  13. System.out.println(g);
  14.  
  15. }
  16.  
  17. }

2.Object类

Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。所有类在创建对象的时候,最终找的父类就是Object。

2.1equals方法

equals方法,用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。Object类中的equals方法内部使用的就是==比较运算符。

在开发中要比较两个对象是否相同,经常会根据对象中的属性值进行比较,也就是在开发经常需要子类重写equals方法根据对象的属性值进行比较。如下代码演示:

  1. package cn.jxufe.java.chapter5.demo01;
  2.  
  3. public class EqualsClass {
  4.  
  5. public static void main(String[] args) {
  6. // TODO Auto-generated method stub
  7. Person p1 = new Person();
  8. Person p2 = new Person();
  9. System.out.println(p1.equals(p2));
  10. p1.age = 10;
  11. p2.age = 100;
  12. System.out.println(p1.equals(p2));
  13. }
  14.  
  15. }
  16.  
  17. /*
  18. * 描述人这个类,并定义功能根据年龄判断是否是同龄人 由于要根据指定类的属性进行比较,这时只要覆盖Object中的equals方法
  19. * 在方法体中根据类的属性值进行比较
  20. */
  21. class Person extends Object {
  22. int age;
  23.  
  24. //复写父类的equals方法,实现自己的比较方式
  25. public boolean equals(Object obj) {
  26. // 判断当前调用equals方法的对象和传递进来的对象是否是同一个
  27. if (this == obj) {
  28. return true;
  29. }
  30. // 判断传递进来的对象是否是Person类型
  31. if (!(obj instanceof Person)) {
  32. return false;
  33. }
  34. // 将obj向下转型为Perosn引用,访问其属性
  35. Person p = (Person) obj;
  36. return this.age == p.age;
  37. }
  38. }

2.2toString方法

toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。

由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。

  1. package cn.jxufe.java.chapter5.demo01;
  2.  
  3. public class ToString {
  4.  
  5. public static void main(String[] args) {
  6. // TODO Auto-generated method stub
  7. Person2 p1 = new Person2();
  8. System.out.println(p1.toString());
  9. }
  10.  
  11. }
  12.  
  13. class Person2 extends Object {
  14. int age;
  15.  
  16. // 根据Person类的属性重写toString方法
  17. public String toString() {
  18. return "Person [age=" + age + "]";
  19. }
  20. }

3.String类

3.1不可变字符串

查阅API中的String类的描述,发现String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。

  1. //演示字符串
  2. String str = "itcast";
  3. str = "山水集团";

继续查阅API发现说字符串是常量;它们的值在创建之后不能更改,这是什么意思呢?其实就是说一旦这个字符串确定了,那么就会在内存区域中就生成了这个字符串。字符串本身不能改变,但str变量中记录的地址值是可以改变的。

继续查API发现,字符串有大量的重载的构造方法。通过String类的构造方法可以完成字符串对象的创建,那么,通过使用双引号的方式创建对象与new的方式创建对象,有什么不同呢?看如下程序与图解:

  1. package cn.jxufe.java.chapter5.demo01;
  2.  
  3. public class StringClass {
  4.  
  5. public static void main(String[] args) {
  6. // TODO Auto-generated method stub
  7. String s1 = "abc";
  8. String s2 = "abc";
  9. String s3 = new String("abc");
  10. System.out.println(s1 == s2);
  11. System.out.println(s1 == s3);
  12. System.out.println(s1.equals(s3));// 因为String重写了equals方法,建立了字符串自己的判断相同的依据(通过字符串对象中的字符来判断)
  13. }
  14.  
  15. }

s2和s3的创建方式有什么不同呢?

  • s2创建,在内存中只有一个对象。这个对象在字符串常量池中
  • s3创建,在内存中有两个对象。一个new的对象在堆中,一个字符串本身对象,在字符串常量池中

3.2字符串的替换和分隔

  1. package cn.jxufe.java.chapter5.demo01;
  2.  
  3. public class TestString1 {
  4.  
  5. public static void main(String[] args) {
  6. // TODO Auto-generated method stub
  7. String s = "Welcome";
  8. String t = s.replace('e', 'A');
  9. System.out.println(s);
  10. System.out.println(t);
  11. String t2 = s.replaceFirst("e", "A"); // 注意为双引号
  12. System.out.println(t2);
  13. String t3 = s.replaceAll("e", "A"); // 注意为双引号
  14. System.out.println(t3);
  15.  
  16. }
  17. }

  1. package cn.jxufe.java.chapter5.demo01;
  2.  
  3. public class TestString2 {
  4.  
  5. public static void main(String[] args) {
  6. // TODO Auto-generated method stub
  7. String[] token = "Java#Html#Python".split("#");// 注意是双引号
  8. for (String e : token) {
  9. System.out.println(e);
  10. }
  11. }
  12.  
  13. }

3.3依照模式匹配、替换和分隔

  1. public static void main(String[] args) {
  2. // TODO Auto-generated method stub
  3. System.out.println("java".matches("java"));
  4. System.out.println("java".equals("java"));
  5. }

  1. public static void main(String[] args) {
  2. // TODO Auto-generated method stub
  3.  
  4. System.out.println("java is fun".matches("java.*"));
  5. System.out.println("java is cool".matches("java.*"));
  6.  
  7. }

更多的正则表达式用法,将在后面进行总结。

3.4字符串和数组直接的转换

  1. package cn.jxufe.java.chapter5.demo01;
  2.  
  3. import java.util.Arrays;
  4.  
  5. public class TestString4 {
  6.  
  7. public static void main(String[] args) {
  8. // TODO Auto-generated method stub
  9. char[] chars = "javaAndPython".toCharArray();
  10. System.out.println(Arrays.toString(chars));
  11. char[] dst = { 'a', 'b', 'c', 'd', 'e', 'f' };
  12. "javaAndPython".getChars(2, 4, dst, 0);
  13. System.out.println(Arrays.toString(dst));
  14. }
  15.  
  16. }

  1. package cn.jxufe.java.chapter5.demo01;
  2.  
  3. public class TestString5 {
  4.  
  5. public static void main(String[] args) {
  6. // TODO Auto-generated method stub
  7. String string = new String(new char[] { 'j', 'a', 'v', 'a' });
  8. System.out.println(string);
  9.  
  10. String string2 = String.valueOf(new char[] { 'j', 'a', 'v', 'a' });
  11. System.out.println(string2);
  12. }
  13.  
  14. }

3.5格式化字符串

  • 搭配转换符的标志

以对齐的方式打印二维数组

  1. package cn.jxufe.java.chapter5.demo01;
  2.  
  3. public class FormateString {
  4.  
  5. public static void main(String[] args) {
  6. double[][] array = { { 125.66667, 35.2, 48.6666547 }, { 123456.2, 23.1, -0.25678 } };
  7. String s1 = String.format("%10.3f", array[0][0]);
  8. String s2 = String.format("%10.3f", array[0][1]);
  9. String s3 = String.format("%10.3f", array[0][2]);
  10. String s4 = String.format("%10.3f", array[1][0]);
  11. String s5 = String.format("%10.3f", array[1][1]);
  12. String s6 = String.format("%10.3f", array[1][2]);
  13.  
  14. System.out.println(s1 + s2 + s3);
  15. System.out.println(s4 + s5 + s6);
  16. }
  17.  
  18. }

4.StringBuilder和StringBuffer类

4.1修改StringBuilder中的字符串

  1. package cn.jxufe.java.chapter5.demo01;
  2.  
  3. public class TestStringBuilder {
  4.  
  5. public static void main(String[] args) {
  6. // TODO Auto-generated method stub
  7. StringBuilder stringBuilder = new StringBuilder();
  8. stringBuilder.append("Welcome");
  9. stringBuilder.append(' ');
  10. stringBuilder.append("to");
  11. stringBuilder.append(' ');
  12. stringBuilder.append("java");
  13. System.out.println(stringBuilder);
  14.  
  15. stringBuilder.insert(11, "html and ");
  16. System.out.println(stringBuilder);
  17. stringBuilder.insert(11, 110); // 重载了,支持int型,同理追加的那些类型,插入也都支持
  18. System.out.println(stringBuilder);
  19.  
  20. stringBuilder.delete(11, 14);
  21. System.out.println(stringBuilder);
  22.  
  23. System.out.println(stringBuilder.reverse());
  24. System.out.println(stringBuilder.reverse());// 翻转
  25.  
  26. System.out.println(stringBuilder.replace(11, 15, "good"));// 替换
  27. }
  28.  
  29. }

5.示例学习:判断回文串

  1. package cn.jxufe.java.chapter5.demo01;
  2.  
  3. import java.util.Scanner;
  4.  
  5. /**
  6. * 判断回文串
  7. *
  8. * @author Administrator
  9. *
  10. */
  11. public class Example {
  12.  
  13. public static void main(String[] args) {
  14. // TODO Auto-generated method stub
  15. Scanner input = new Scanner(System.in);
  16. System.out.println("enter a string ");
  17. String string = input.nextLine();
  18. System.out.println("Ignore nonalphanumeric characters is " + string + " a palindrome? " + isPalindrome(string));
  19. }
  20.  
  21. public static boolean isPalindrome(String s) {
  22. String s1 = fliter(s);
  23. String s2 = reverse(s1);
  24.  
  25. return s1.equals(s2);
  26. }
  27.  
  28. public static String fliter(String s) {
  29. StringBuilder stringBuilder = new StringBuilder();
  30. for (int i = 0; i < s.length(); i++) {
  31. if (Character.isLetterOrDigit(s.charAt(i))) {
  32. stringBuilder.append(s.charAt(i));
  33. }
  34. }
  35. return stringBuilder.toString();
  36. }
  37.  
  38. public static String reverse(String s) {
  39. StringBuilder stringBuilder = new StringBuilder(s);
  40. stringBuilder.reverse();
  41. return stringBuilder.toString();
  42. }
  43.  
  44. }

6.包装类

6.1为什么需要包装类

在实际程序使用中,程序界面上(注意不是在控制台)用户输入的数据都是以字符串类型进行存储的。而程序开发中,我们需要把字符串数据,根据需求转换成指定的基本数据类型,如年龄需要转换成int类型,考试成绩需要转换成double类型等。那么,想实现字符串与基本数据之间转换怎么办呢?

6.2包装类的作用

最常用的作用:用于在基本数据和字符串之间进行转换。

6.3包装类和基本数据类型的对应关系

6.4包装类对象的创建方式

6.5包装类的常用方法

  1. package cn.jxufe.java.chapter5.demo02;
  2.  
  3. /**
  4. * 测试包装类
  5. * Integer类的使用。其他包装类用法类似,课下自己学。
  6. *
  7. */
  8. public class TestWrappedClass {
  9. public static void main(String[] args) {
  10. //基本数据类型转成包装类对象
  11. Integer a = new Integer(3);
  12. Integer b = Integer.valueOf(30);
  13.  
  14. //把包装类对象转成基本数据类型
  15. int c = b.intValue();
  16. double d = b.doubleValue();
  17.  
  18. //把字符串转成包装类对象
  19. Integer e = new Integer("9999");
  20. Integer f = Integer.parseInt("999888");
  21.  
  22. //把包装类对象转成字符串
  23. String str = Integer.toString(110);
  24.  
  25. //常见的常量
  26.  
  27. System.out.println("int类型最大的整数:"+Integer.MAX_VALUE);
  28. System.out.println(str);
  29. System.out.println(Integer.parseInt("123"));
  30. }
  31. }

6.6自动装箱和自动拆箱

把基本的数据类型转换成相应的包装类型的对象称为装箱;

把包装类型对象转换为相应的基本数据类型称为拆箱。

JDK5.0之后提供了自动装箱和拆箱的功能。

  1. Integer i = 4;//自动装箱。相当于Integer i = Integer.valueOf(4);
  2. i = i + 5;//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5; 加法运算完成后,再次装箱,把基本数值转成对象。

自动装箱(byte常量池)细节的演示

当数值在byte范围之内时,进行自动装箱,不会新创建对象空间而是使用医来已有的空间。

  1. package cn.jxufe.java.chapter5.demo02;
  2.  
  3. public class TestInteger {
  4.  
  5. public static void main(String[] args) {
  6. // TODO Auto-generated method stub
  7. Integer a = new Integer(3);
  8. Integer b = new Integer(3);
  9. System.out.println(a==b);//false
  10. System.out.println(a.equals(b));//true
  11.  
  12. Integer c = 3; //自动装箱了
  13. Integer d = 3;
  14. System.out.println(a==b);//false
  15. System.out.println(a.equals(b));//true
  16.  
  17. System.out.println("---------------------");
  18. Integer x = 127;
  19. Integer y = 127;
  20. //在jdk1.5自动装箱时,如果数值在byte范围之内,不会新创建对象空间而是使用原来已有的空间。
  21. System.out.println(x==y); //true
  22. System.out.println(x.equals(y)); //true
  23.  
  24. }
  25.  
  26. }

7.时间处理相关类

7.1System.currentTimeMillis()

我们把1970 年 1 月 1 日 00:00:00定为基准时间,现在时刻的“时刻数值”,可以使用:

  1. System.out.println(System.currentTimeMillis());

7.2Date类

  1. package cn.jxufe.java.chapter5.demo02;
  2.  
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5.  
  6. public class TestTime {
  7.  
  8. public static void main(String[] args) {
  9. // TODO Auto-generated method stub
  10. System.out.println(System.currentTimeMillis());
  11. Date date = new Date();
  12. Date date2 = new Date(2000);// 2000毫秒
  13. System.out.println(date2);
  14.  
  15. System.out.println(date);
  16. System.out.println(date.getTime());
  17. System.out.println(date.after(date2));// 测试此日期是否在指定日期之后。
  18. System.out.println(date.before(date2));// 测试此日期是否在指定日期之前。
  19. System.out.println(date.toString());
  20. /*
  21. * 把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天
  22. * (Sun、 Mon、Tue、
  23. */
  24.  
  25. SimpleDateFormat f = new SimpleDateFormat("yyyy-MMMM-dd-E");
  26. SimpleDateFormat g = new SimpleDateFormat("yyyy-MM-dd-EEEE");
  27. SimpleDateFormat w = new SimpleDateFormat("yyyy/MM/dd");
  28. System.out.println(f.format(date));
  29. System.out.println(g.format(date));
  30. System.out.println(w.format(date));
  31.  
  32. SimpleDateFormat s1 = new SimpleDateFormat("D");//D表示年中的天数
  33. String daytime = s1.format(new Date());
  34. System.out.println(daytime);
  35. }
  36.  
  37. }

7.3Calendar类

  1. package cn.jxufe.java.chapter5.demo02;
  2.  
  3. import java.util.Calendar;
  4.  
  5. public class TestCalendar {
  6.  
  7. public static void main(String[] args) {
  8. // TODO Auto-generated method stub
  9. Calendar now = Calendar.getInstance();
  10. int year = now.get(Calendar.YEAR);
  11. System.out.println(year);
  12. int Month = now.get(Calendar.DAY_OF_MONTH);
  13. System.out.println(Month);
  14. int month = now.get(Calendar.MONTH)+1; // 0是1月,1是2月,从0开始
  15. System.out.println(month);
  16. int week = now.get(Calendar.DAY_OF_WEEK)-1;//周日是第一天,周一是第二天
  17. System.out.println(week);
  18. }
  19.  
  20. }

05java基础的更多相关文章

  1. 05JAVA基础方法

    一.格式 函数有返回值 public static 返回类型 方法名(参数类型 形参1,参数类型 形参2){ 函数体; return 返回值;//返回值必须是定义的返回类型 } 函数没有有返回值 pu ...

  2. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  3. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  4. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  5. Golang, 以17个简短代码片段,切底弄懂 channel 基础

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...

  6. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  7. HTTPS 互联网世界的安全基础

    近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...

  8. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  9. .NetCore MVC中的路由(1)路由配置基础

    .NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...

随机推荐

  1. http常用标签

    HTML标签大全(常用)   文本标记语言,即HTML(Hypertext Markup Language),是用于描述网页文档的一种标记语言. HTML之所以称为超文本标记语言,是因为文本中包含了所 ...

  2. 微信小程序的 音频 组件

    audio:音频组件, api 接口为 wx.createInnerAudioContext audio 组件的属性: id:类型 字符串 audio 组件的唯一标识 src:类型 字符串 要播放音频 ...

  3. Array Stack Implement using C

  4. 555E Case of Computer Network

    分析 一个连通块内的肯定不影响 于是我们先缩点 之后对于每个路径 向上向下分别开一个差分数组 如果两个数组同时有值则不合法 代码 #include<bits/stdc++.h> using ...

  5. VBA通过C#以API方式调用JS脚本函数

    http://www.cnblogs.com/Charltsing/p/JSDotNetAPI.html 在网页采集中,很多时候需要运行网站下载的某个js文件中的函数,以计算Request参数.VBA ...

  6. MYSQL5.7源码包编译安装

    Centos下用cmake编译安装MySQL 5.7安装依赖包yum -y install gcc gcc-c++ ncurses ncurses-devel cmake下载相应源码包cd /usr/ ...

  7. 阶段3 1.Mybatis_09.Mybatis的多表操作_9 mybatis多对多操作-查询用户获取用户所包含的角色信息

    sql语句以user作为主表 用户的全部信息,以为用户下的角色的.并不是所有的用户都有角色,有角色的就带角色.没角色的就为null 首先修改实体类 定义List<Role> 生成gette ...

  8. IntToHex

    IntToHex是一种函数,功能是将一个值转换成16进制形式的字符串. IntToHex(int Value, int Digits) 来源: 在Delphi.Pascal或C++ Builder中使 ...

  9. 【HANA系列】SAP HANA 2.0简介

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA 2.0简介   ...

  10. django 的 MTV 流程图