zoukankan      html  css  js  c++  java
  • Java基础知识总结

    Java基础知识总结

    基本数据类型

    Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

    基本类型之间的转换

    强制类型转换

    如果要把大的转成小的,或者在short与char之间进行转换,就必须强制转换,也被称作缩小转换(narrowing conversion),因为必须显式地使数值更小以适应目标类型。强制转换采用转换操作符()。严格地说,将byte转为char不属于narrowing conversion),因为从byte到char的过程其实是byte-->int-->char,所以widening和narrowing都有。强制转换除了可能的精度损失外,还可能使模(overall magnitude)发生变化。

    字符串

    创建字符串

    String name = new String("星星");
    

    或者

    String name = "星星";
    

    字符串长度

    用于获取有关对象的信息的方法称为访问器方法。
    String 类的一个访问器方法是 length() 方法,它返回字符串对象包含的字符数。

    连接字符串

    String 类提供了连接两个字符串的方法:

    string1.concat(string2);
    

    返回 string2 连接 string1 的新字符串。也可以对字符串常量使用 concat() 方法,如:

    "星星".concat("star");
    

    更常用的是使用'+'操作符来连接字符串,如:

    "Hello," + " star" + "!"
    

    创建格式化字符串

    我们知道输出格式化数字可以使用 printf() 和 format() 方法。
    String 类使用静态方法 format() 返回一个String 对象而不是 PrintStream 对象。
    String 类的静态方法 format() 能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。

    字符串比较

    使用equals()方法,区分大小写

    System.out.println("star".equals("star"));
    

    使用equalsIgnoreCase()方法,忽略大小写

    System.out.println("star".equalsIgnoreCase("Star"));
    

    字符串截取,使用substring()方法

    String blog = "star and moon";
     String sub1 = string.substring(2);
     String sub2 = blog.substring(2, 4);
     System.out.println(sub1);
     System.out.println(sub2);
    

    字符串查找,使用indexOf()方法

    String string2 = "I love Java";
     String string3 = "o";
     int serindex1 = string2.indexOf(string3); //从String2开始位置查找string3字符串
     int serindex2 = string2.indexOf(string3,5); //从String2字符串第二个位置查找string3字符串
     System.out.println(serindex1); //从0开始
     System.out.println(serindex2); //查询不到显示-1
    

    字符串替换,replace(oldChar, newChar)

    char oldChar = 'I';
     char newChar = 'U';
     string2.replace(oldChar, newChar);
     System.out.print(string2.replace(oldChar, newChar));
    

    字符串转换字符数组

    String hellostring = "hello";
     char[] helloArray = hellostring.toCharArray();
    

    String StringBuffer 和 StringBuilder 的区别

    • 可变性

    简单的来说:String 类中使用 final 关键字修饰字符数组来保存字符串,private final char value[],所以 String 对象是不可变的。而StringBuilder 与 StringBuffer 都继承自 AbstractStringBuilder 类,在 AbstractStringBuilder 中也是使用字符数组保存字符串char[]value 但是没有用 final 关键字修饰,所以这两种对象都是可变的。
    StringBuilder 与 StringBuffer 的构造方法都是调用父类构造方法也就是 AbstractStringBuilder 实现的,大家可以自行查阅源码。

    AbstractStringBuilder.java

    abstract class AbstractStringBuilder implements Appendable, CharSequence {
    	char[] value;
    	int count;
    	AbstractStringBuilder() {
    	}
    	AbstractStringBuilder(int capacity) {
    		value = new char[capacity];
    	}
    }
    
    • 线程安全性

    String 中的对象是不可变的,也就可以理解为常量,线程安全。AbstractStringBuilder 是 StringBuilder 与 StringBuffer 的公共父类,定义了一些字符串的基本操作,如 expandCapacity、append、insert、indexOf 等公共方法。StringBuffer 对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。StringBuilder 并没有对方法进行加同步锁,所以是非线程安全的。 

    • 性能
      每次对 String 类型进行改变的时候,都会生成一个新的 String 对象,然后将指针指向新的 String 对象。StringBuffer 每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象并改变对象引用。相同情况下使用 StringBuilder 相比使用 StringBuffer 仅能获得 10%~15% 左右的性能提升,但却要冒多线程不安全的风险。

    对于三者使用的总结:

    1. 操作少量的数据: 适用String

    2. 单线程操作字符串缓冲区下操作大量数据: 适用StringBuilder

    3. 多线程操作字符串缓冲区下操作大量数据: 适用StringBuffer

    大数值

    在 Java 中提供了大数字的操作类,即 java.math.BigInteger 类与 java.math.BigDecimal 类。这两个类用于高精度计算, BigInteger 类是针对大整数的处理类,而 BigDecimal 类则是针对大小数的处理类。

    使用静态的valueOf方法可以将普通的数值转换成大数值。

    数组

    Java 语言中提供的数组是用来存储固定大小的同类型元素。

    数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。

    数组属引用类型,数组型数据是对象(object),数组中的每个元素相当于该对象的成员变量。

    数组是多个相同类型数据的组合,实现对这些数据的统一管理。一个数组实际上就是一连串的变量,数组按照使用可以分为一维数组、二维数组、多维数组。

    声明数组变量

    首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:
    dataType[] arrayRefVar; // 首选的方法dataType arrayRefVar[]; // 效果相同,但不是首选方法

    创建数组

    Java语言使用new操作符来创建数组 dataType[] arrayRefVar = new dataType[arraySize];

    For-Each 循环

    JDK 1.5 引进了一种新的循环类型,被称为 For-Each 循环或者加强型循环,它能在不使用下标的情况下遍历数组。

    语法格式如下:

    for(type element: array)
    {
    	System.out.println(element);
    }
    

    多维数组

    多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组,例如:

    String str[][] = new String[3][4];
    

    Arrays 类

    java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。
    具有以下功能:

    • 给数组赋值:通过 fill 方法。
    • 对数组排序:通过 sort 方法,按升序。
    • 比较数组:通过 equals 方法比较数组中元素值是否相等。
    • 查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
  • 相关阅读:
    javascript 3秒钟后自动跳转到前一页面
    meta
    HTML 5 label
    WCF的ABC
    由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面。
    ECMASCRIPT5新特性(转载)
    bin目录正.pdb是什么文件?
    PS切图的相关技巧
    MongoVUE破解方法
    ASP.NET MVC Area操作
  • 原文地址:https://www.cnblogs.com/leton/p/11667839.html
Copyright © 2011-2022 走看看