java笔记2——类

类是一个模板,它描述一类对象的行为和状态。类可以看成是创建Java对象的模板,

通过下面一个简单的类来理解下Java中类的定义:

public class Dog{
  String breed;
  int age;
  String color;
  void barking(){
  }
 
  void hungry(){
  }
 
  void sleeping(){
  }
  public Dog(){
  }
  public Dog(String name){
  }
  public static void main(String[] args){
      Dog myDog = new Dog("tommy");
   }
}

其中包含的变量有如下3种类型:

(1)局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。

(2)成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。

(3)类变量:类变量是声明在类中,方法体之外且声明为static类型的变量。

另外,类中还包含一系列的方法,其中与类同名的方法为构造方法,一个类可以有0到多个构造方法(多个构造方法通过其输入参数进行区分),如果类中没有定义构造方法,java编译器会提供一个默认的构造方法。

类是一个模板,通过类可以使用关键字new创建一个对象:声明->实例化->初始化。

我们经常会遇到需要使用对象,而不是内置数据类型的情况。为了解决这个问题,Java语言为提供了一些包装类如Character类、Math类;

1.Character类

使用Character的构造方法创建一个Character类对象:

Character ch=new Character('a');

在某些情况下,Java编译器会自动创建一个Character对象(当一个char类型的参数传递给需要一个Character类型参数的方法时,那么编译器会自动地将char类型参数转换为Character对象。 这种特征称为装箱,反过来称为拆箱。)。

下面是Character类的常用方法:

方法名 作用
Character.isLetter(c) 判断字符c是否为字母
Character.isDigit(c) 判断字符c是否为数字
Character.isWhitespace(c) 判断字符c是否为空白字符
Character.isUpperCase(c) 判断字符c是否为大写字母
Character.isLowerCase(c) 判断字符c是否为小写字母
Character.toUpperCase(c) 返回字符c的大写形式
Character.toLowerCase(c) 返回字符c的小写形式
Character.toString(c) 返回字符c的字符串形式

2.String类

String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了,如果需要对字符串做很多修改,那么应该选择使用StringBuffer或StringBuilder类

字符串之间的连接:"Hello, "+"World!",若要求更高,可使用format()方法创建格式化字符串,以一个例子说明:

String fs;
fs = String.format("浮点型变量的值为 " +
                   "%f, 整型变量的值为 " +
                   " %d, 字符串变量的值为 " +
                   " %s", floatVar, intVar, stringVar);

下面介绍一些String类常用的方法:

方法名 作用
s.charAt(i) 返回指定索引处的字符,i从0到len-1
s1.compareTo(s2) 比较字符串s1与s2;相等返回0,s1s2返回一个大于0的数
s1.compareToIgnoreCase(s2) 按字典顺序比较两个字符串,不考虑大小写。
s=s1.concat(s2) 将指定的字符串参数连接到字符串上
s.contentEquals(sb) 将此字符串与指定的 StringBuffer 对象比较;相等返回true,不相等返回false
s.copyValueOf(char[] d,int of=0,int co=len) 返回指定数组中表示指定(偏移量,长度)字符序列的字符串。
s1.endsWith(s2) 测试字符串s1是否以指定的后缀s2结束
s.equals(obj) 将字符串s与指定的对象obj比较
s1.equalsIgnoreCase(s2) 将字符串s1与字符串s2比较,不考虑大小写。
s.getBytes(charseName) 使用指定的字符集charseName将字符串编码为 byte 序列后返回,charseName缺省则使用平台默认字符集
s1.getChars(sbe,sen,s2,dbe) 复制字符串s1从sbe到sen的子序列到字符数组s2的dbe偏移处
s.hashCode() 返回字符串s的哈希码
s1.indexOf(s2,int from=0) 返回从from位置开始查找指定字符在字符串中第一次出现处的索引
s1.intern() 返回字符串对象的规范化表示形式。
s1.lastIndexOf(s2,int from=len-1) 返回子字符串s2在字符串s1中最后一次出现处的索引,从指定的索引开始反向搜索。
s.length() 返回字符串s的长度
s.matches(regex) 检测字符串是否匹配给定的正则表达式
s1.regionMatches(boolean ignoreCase=false,of1,s2,of2,len) 检测两个字符串子序列s1[of1..of1+len-1]与s2[of2..of2+len-1]是否相等,ignoreCase决定是否忽略大小写
s2=s1.replace(oc,nc) 返回将s1中oc替换为nc后的新字符串s2
s1.replaceAll(regex,s2) 使用给定的字符串s2替换字符串s1中所有匹配正则表达式regex的子字符串
s1.replaceFirst(regex,s2)  使用给定的字符串s2替换字符串s1中第一个匹配正则表达式regex的子字符串
String[] s2=s1.split(regex,int lim) 根据匹配正则表达式regex来拆分字符串s1为字符串数组s2,lim设定拆分组数,缺省则全部拆分
s1.startsWith(s2,int from=0) 检测字符串s1是否以指定的前缀开始,from设定开始查找的索引
CharSequence s2=s1.subSequence(from,end) 返回一个新的字符序列,它是此序列从from到end的一个子序列。
s2=s1.substring(begin,end) 返回字符串s1从begin(包括)到end(不包括)的子序列
s2=s1.toCharArray() 将字符串s1转换为字符数组s2
s2=s1.toLowerCase() 将字符串s1转换为小写
s2=s1.toUpperCase() 将字符串s1转换为大写
s2=s1.trim() 返回删除字符串s1的头尾空白符之后的字符串

这里需要详细说明一下的是intern()方法,虽然看上去字符串使用这个方法之后像什么都没有做,但是后台会进行一系列的动作:在调用”ab”.intern()方法的时候会返回”ab”,但是这个方法会首先检查字符串池中是否有”ab”这个字符串,如果存在则返回这个字符串的引用,否则就将这个字符串添加到字符串池中,然会返回这个字符串的引用。

字符串相加的时候,都是静态字符串的结果会添加到字符串池,如果其中含有变量则不会进入字符串池中。

3.StringBuffer与StringBuilder

当需要对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。StringBuilder 的方法不是线程安全的(不能同步访问),StringBuffer是线程安全的,但是对StringBuffer进行操作的话速度较慢。下面介绍一些StringBuffer类的方法:

方法名 作用
s1.append(s2) 将字符序列s2追加到字符序列s1之后
s.reverse() 将此字符序列反转。
s.delete(start, end) 移除字符序列中从start到end的字符
s.insert(offset, i) 将i的字符串表示形式插入字符序列s的offset偏移处
s1.replace(start, end, s2) 将字符序列从start到end段用字符串s2替换
s.capacity() 返回当前容量
s.ensureCapacity(min) 确保s的容量至少为min
s.setLength(nlen) 将字符序列s的长度设置为nlen

4.Math类

java提供了便于数学运算的包装类(Integer、Long、Byte、Double、Float、Short)与Math类(实现了常见的数学运算):

方法名 作用
num.xxValue() 将包装类对象num转换为xx数据类型的值并返回
x.compareTo(y)  x>y返回1,x=y返回0,x
x.equals(y) x=y返回1,否则返回0
xx b=xx.valueOf(a) 将a转换为xx类型的b
Integer b=Integer.valueOf(Sring a,int radix) 返回以radix进制的字符串a的十进制值
x.toString() 返回x的字符串形式
xx.toString(a) 将xx类型的a转换为字符串
Integer.parseInt(String a,int radix=10) 将字符串参数作为有符号的radix进制整数进行解析,返回其int类型的值
Math.abs(x) x是基本数据类型,返回x的绝对值
Math.ceil(x) 对x向上取整
Math.floor(x) 对x向下取整
Math.rint(x) 返回距离x最近的整数
Math.round(x) 对x四舍五入
Math.min(x,y) 返回参数中的最小值
Math.max(x,y) 返回参数中的最大值
Math.exp(x) 返回自然数e的参数次方
Math.log(x) 返回参数x的自然数e为底的对数值。
Math.pow(x,y) 返回x的y次方
Math.sqrt(x) 返回x的平方根
Math.sin(x) 返回以x为角度的正弦值
Math.cos(x) 返回以x为角度的余弦值
Math.tan(x) 返回以x为角度的正切值
Math.asin(x) 返回以x的反正弦值
Math.acos(x) 返回以x的反余弦值
Math.atan(x) 返回以x的反正切值
Math.atan2(y,x) 即atan(y/x)
Math.toDegrees(x) 将弧度x转换为角度
Math.toRadians(x) 将角度x转换为弧度
Math.random() 返回随机数

 

你可能感兴趣的:(Java)