1.BigInteger和BigDecimal类

package cn.jxufe.java.chapter5.demo01;

import java.math.BigInteger;

public class TestBigInterger {

    public static void main(String[] args) {
// TODO Auto-generated method stub
BigInteger a = new BigInteger("9223372036854775807");
BigInteger b = new BigInteger("2");
BigInteger c = a.multiply(b);
System.out.println(c);
} }

package cn.jxufe.java.chapter5.demo01;

import java.math.BigDecimal;
import java.math.BigInteger; public class TestBigInterger { public static void main(String[] args) {
// TODO Auto-generated method stub

BigDecimal e = new BigDecimal(1.0);
BigDecimal f = new BigDecimal(3);
BigDecimal g = e.divide(f, 20, BigDecimal.ROUND_UP);
System.out.println(g); } }

2.Object类

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

2.1equals方法

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

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

package cn.jxufe.java.chapter5.demo01;

public class EqualsClass {

    public static void main(String[] args) {
// TODO Auto-generated method stub
Person p1 = new Person();
Person p2 = new Person();
System.out.println(p1.equals(p2));
p1.age = 10;
p2.age = 100;
System.out.println(p1.equals(p2));
} } /*
* 描述人这个类,并定义功能根据年龄判断是否是同龄人 由于要根据指定类的属性进行比较,这时只要覆盖Object中的equals方法
* 在方法体中根据类的属性值进行比较
*/
class Person extends Object {
int age; //复写父类的equals方法,实现自己的比较方式
public boolean equals(Object obj) {
// 判断当前调用equals方法的对象和传递进来的对象是否是同一个
if (this == obj) {
return true;
}
// 判断传递进来的对象是否是Person类型
if (!(obj instanceof Person)) {
return false;
}
// 将obj向下转型为Perosn引用,访问其属性
Person p = (Person) obj;
return this.age == p.age;
}
}

2.2toString方法

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

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

package cn.jxufe.java.chapter5.demo01;

public class ToString {

    public static void main(String[] args) {
// TODO Auto-generated method stub
Person2 p1 = new Person2();
System.out.println(p1.toString());
} } class Person2 extends Object {
int age; // 根据Person类的属性重写toString方法
public String toString() {
return "Person [age=" + age + "]";
}
}

3.String类

3.1不可变字符串

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

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

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

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

package cn.jxufe.java.chapter5.demo01;

public class StringClass {

    public static void main(String[] args) {
// TODO Auto-generated method stub
String s1 = "abc";
String s2 = "abc";
String s3 = new String("abc");
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s1.equals(s3));// 因为String重写了equals方法,建立了字符串自己的判断相同的依据(通过字符串对象中的字符来判断)
} }

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

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

3.2字符串的替换和分隔

package cn.jxufe.java.chapter5.demo01;

public class TestString1 {

    public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "Welcome";
String t = s.replace('e', 'A');
System.out.println(s);
System.out.println(t);
String t2 = s.replaceFirst("e", "A"); // 注意为双引号
System.out.println(t2);
String t3 = s.replaceAll("e", "A"); // 注意为双引号
System.out.println(t3); }
}

package cn.jxufe.java.chapter5.demo01;

public class TestString2 {

    public static void main(String[] args) {
// TODO Auto-generated method stub
String[] token = "Java#Html#Python".split("#");// 注意是双引号
for (String e : token) {
System.out.println(e);
}
} }

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

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

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

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

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

package cn.jxufe.java.chapter5.demo01;

import java.util.Arrays;

public class TestString4 {

    public static void main(String[] args) {
// TODO Auto-generated method stub
char[] chars = "javaAndPython".toCharArray();
System.out.println(Arrays.toString(chars));
char[] dst = { 'a', 'b', 'c', 'd', 'e', 'f' };
"javaAndPython".getChars(2, 4, dst, 0);
System.out.println(Arrays.toString(dst));
} }

package cn.jxufe.java.chapter5.demo01;

public class TestString5 {

    public static void main(String[] args) {
// TODO Auto-generated method stub
String string = new String(new char[] { 'j', 'a', 'v', 'a' });
System.out.println(string); String string2 = String.valueOf(new char[] { 'j', 'a', 'v', 'a' });
System.out.println(string2);
} }

3.5格式化字符串

  • 搭配转换符的标志

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

package cn.jxufe.java.chapter5.demo01;

public class FormateString {

    public static void main(String[] args) {
double[][] array = { { 125.66667, 35.2, 48.6666547 }, { 123456.2, 23.1, -0.25678 } };
String s1 = String.format("%10.3f", array[0][0]);
String s2 = String.format("%10.3f", array[0][1]);
String s3 = String.format("%10.3f", array[0][2]);
String s4 = String.format("%10.3f", array[1][0]);
String s5 = String.format("%10.3f", array[1][1]);
String s6 = String.format("%10.3f", array[1][2]); System.out.println(s1 + s2 + s3);
System.out.println(s4 + s5 + s6);
} }

4.StringBuilder和StringBuffer类

4.1修改StringBuilder中的字符串

package cn.jxufe.java.chapter5.demo01;

public class TestStringBuilder {

    public static void main(String[] args) {
// TODO Auto-generated method stub
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("Welcome");
stringBuilder.append(' ');
stringBuilder.append("to");
stringBuilder.append(' ');
stringBuilder.append("java");
System.out.println(stringBuilder); stringBuilder.insert(11, "html and ");
System.out.println(stringBuilder);
stringBuilder.insert(11, 110); // 重载了,支持int型,同理追加的那些类型,插入也都支持
System.out.println(stringBuilder); stringBuilder.delete(11, 14);
System.out.println(stringBuilder); System.out.println(stringBuilder.reverse());
System.out.println(stringBuilder.reverse());// 翻转 System.out.println(stringBuilder.replace(11, 15, "good"));// 替换
} }

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

package cn.jxufe.java.chapter5.demo01;

import java.util.Scanner;

/**
* 判断回文串
*
* @author Administrator
*
*/
public class Example { public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
System.out.println("enter a string ");
String string = input.nextLine();
System.out.println("Ignore nonalphanumeric characters is " + string + " a palindrome? " + isPalindrome(string));
} public static boolean isPalindrome(String s) {
String s1 = fliter(s);
String s2 = reverse(s1); return s1.equals(s2);
} public static String fliter(String s) {
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
if (Character.isLetterOrDigit(s.charAt(i))) {
stringBuilder.append(s.charAt(i));
}
}
return stringBuilder.toString();
} public static String reverse(String s) {
StringBuilder stringBuilder = new StringBuilder(s);
stringBuilder.reverse();
return stringBuilder.toString();
} }

6.包装类

6.1为什么需要包装类

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

6.2包装类的作用

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

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

6.4包装类对象的创建方式

6.5包装类的常用方法

package cn.jxufe.java.chapter5.demo02;

/**
* 测试包装类
* Integer类的使用。其他包装类用法类似,课下自己学。
*
*/
public class TestWrappedClass {
public static void main(String[] args) {
//基本数据类型转成包装类对象
Integer a = new Integer(3);
Integer b = Integer.valueOf(30); //把包装类对象转成基本数据类型
int c = b.intValue();
double d = b.doubleValue(); //把字符串转成包装类对象
Integer e = new Integer("9999");
Integer f = Integer.parseInt("999888"); //把包装类对象转成字符串
String str = Integer.toString(110); //常见的常量 System.out.println("int类型最大的整数:"+Integer.MAX_VALUE);
System.out.println(str);
System.out.println(Integer.parseInt("123"));
}
}

6.6自动装箱和自动拆箱

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

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

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

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

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

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

package cn.jxufe.java.chapter5.demo02;

public class TestInteger {

    public static void main(String[] args) {
// TODO Auto-generated method stub
Integer a = new Integer(3);
Integer b = new Integer(3);
System.out.println(a==b);//false
System.out.println(a.equals(b));//true Integer c = 3; //自动装箱了
Integer d = 3;
System.out.println(a==b);//false
System.out.println(a.equals(b));//true System.out.println("---------------------");
Integer x = 127;
Integer y = 127;
//在jdk1.5自动装箱时,如果数值在byte范围之内,不会新创建对象空间而是使用原来已有的空间。
System.out.println(x==y); //true
System.out.println(x.equals(y)); //true } }

7.时间处理相关类

7.1System.currentTimeMillis()

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

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

7.2Date类

package cn.jxufe.java.chapter5.demo02;

import java.text.SimpleDateFormat;
import java.util.Date; public class TestTime { public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(System.currentTimeMillis());
Date date = new Date();
Date date2 = new Date(2000);// 2000毫秒
System.out.println(date2); System.out.println(date);
System.out.println(date.getTime());
System.out.println(date.after(date2));// 测试此日期是否在指定日期之后。
System.out.println(date.before(date2));// 测试此日期是否在指定日期之前。
System.out.println(date.toString());
/*
* 把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天
* (Sun、 Mon、Tue、
*/ SimpleDateFormat f = new SimpleDateFormat("yyyy-MMMM-dd-E");
SimpleDateFormat g = new SimpleDateFormat("yyyy-MM-dd-EEEE");
SimpleDateFormat w = new SimpleDateFormat("yyyy/MM/dd");
System.out.println(f.format(date));
System.out.println(g.format(date));
System.out.println(w.format(date)); SimpleDateFormat s1 = new SimpleDateFormat("D");//D表示年中的天数
String daytime = s1.format(new Date());
System.out.println(daytime);
} }

7.3Calendar类

package cn.jxufe.java.chapter5.demo02;

import java.util.Calendar;

public class TestCalendar {

    public static void main(String[] args) {
// TODO Auto-generated method stub
Calendar now = Calendar.getInstance();
int year = now.get(Calendar.YEAR);
System.out.println(year);
int Month = now.get(Calendar.DAY_OF_MONTH);
System.out.println(Month);
int month = now.get(Calendar.MONTH)+1; // 0是1月,1是2月,从0开始
System.out.println(month);
int week = now.get(Calendar.DAY_OF_WEEK)-1;//周日是第一天,周一是第二天
System.out.println(week);
} }

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. javascript二叉树

    javascript中的二叉树一(binary tree) 毕业也快2年了,毕业之后就没有认真写过博客了,都是那里学习一下,这里弄一下.学习了也不做笔记,过后就忘记了.我对这种状态打从心里是讨厌的. ...

  2. POJ 2778 DNA Sequence ( Trie图、矩阵快速幂 )

    题意 : 给出一些病毒串,问你由ATGC构成的长度为 n 且不包含这些病毒串的个数有多少个 分析: 我们先分析Tire 图的结构 : Trie图是在AC自动机的原型上增添边使得状态可以快速转移,标记危 ...

  3. Vue 项目构建

    一.初始化项目 1.vue init webpack (fileName) 2.项目名称 3.项目描述 4.项目作者 5.是否依赖 .Vue 文件开发 第一个选项可以不依赖 .Vue 文件开发, 第二 ...

  4. web开发中会话跟踪的方法

    1. 什么是会话 会话是指一个终端用户(服务器)与交互系统(客户端)进行通讯的过程. 2. 什么是会话跟踪 对同一个用户对服务器的连续的请求和接受响应的监视.(将用户与同一用户发出的不同请求之间关联, ...

  5. 【python】集合 list差集|并集|交集

    两个list差集 list(set(b).difference(set(a))) # b中有而a中没有的 示例: a=[1,2,3] b=[2,3] list(set(a).difference(se ...

  6. python-又来练习题--输出一个字符串中最长的子字符串及其长度

    一.有个字符串 str= '$sd1#111$svda123!!!221&eSSDSyyyyyyDG^svda121^svda124^1111111111111' 包含特殊字符.数字和字母,输 ...

  7. Python 笔试集(2):你不知道的 Python 整数

    面试题 分别给出下述代码在终端(e.g. IPyhon)中和在程序中的运行结果: a = 256 b = 256 c = 257 d = 257 def foo(): e = 257 f = 257 ...

  8. 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_7 Mybatis中使用代理Dao的执行过程分析

    另外一种情况,不写Mybits的dao实现类的情况. 切换工程到CRUD的工程.这里面是不写dao实现类的方式 进入到GetMaper里面.这里是创建代理对象 去找SqlSession的实现类Defa ...

  9. 在VSCode中开启ESLint风格审查

    最近一直在学习开发一个VUE项目,几乎没有前端基础摸爬滚打,就一边摸索HTML,JS,CSS一边模仿着已有代码开发,也还算能学到东西. VSCode确实还不错,很轻量.在刚开始学写vue的时候,后台总 ...

  10. 测开之路一百四十四:ORM之SQLAlchemy查询

    在上一篇的基础上,插入数据 查询 Department.query.all() # 用表对象查db.session.query(Department).all() # 用db对象查 查询前两条,直接p ...