您的位置:首页 > 移动开发 > Android开发

Android学习笔记day12

2016-03-04 19:40 381 查看
JAVA反射机制:

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

获取class对象的方式:

1.通过Object类的getClass()方法。例如:

Class c1 = new String("").getClass();

2.通过Class类的静态方法——forName()来实现:

Class c2 = Class.forName("MyObject");

3.如果T是一个已定义的类型的话,在java中,它的.class文件名:T.class就代表了与其匹配的Class对象,例如:

Class c3 = Manager.class;

Class c4 = int.class;

Class c5 = Double[].class;

Class类中存在以下几个重要的方法:

1.getName()

一个Class对象描述了一个特定类的特定属性,而这个方法就是返回String形式的该类的简要描述。由于历史原因,对数组的Class对象

调用该方法会产生奇怪的结果。

2.newInstance()

该方法可以根据某个Class对象产生其对应类的实例。需要强调的是,它调用的是此类的默认构造方法。例如:

MyObject x = new MyObject();

MyObject y = x.getClass().newInstance();

3.getClassLoader()

返回该Class对象对应的类的类加载器。

4.getComponentType()

该方法针对数组对象的Class对象,可以得到该数组的组成元素所对应对象的Class对象。例如:

int[] ints = new int[]{1,2,3};

Class class1 = ints.getClass();

Class class2 = class1.getComponentType();

而这里得到的class2对象所对应的就应该是int这个基本类型的Class对象。

5.getSuperClass()

返回某子类所对应的直接父类所对应的Class对象。

6.isArray()

判定此Class对象所对应的是否是一个数组对象。

第九天作业练习:

写一个字符串反转的方法,把“abcdefg”转换成“gfedcba”。

package com.xiaofei.zuoye;

public class demo03 {

public static void main(String[] args) {

// TODO Auto-generated method stub

String str = "abcdefg";

StringBuffer sb = new StringBuffer(str);

sb = sb.reverse();

System.out.println(sb);

}

}

替换字符串,把“abc.abc.abc”替换成“abc/abc/abc”。

package com.xiaofei.zuoye;

public class demo04 {

public static void main(String[] args) {

// TODO Auto-generated method stub

String a = "abc.abc.abc";

String b = a.replaceAll("\\.", "/");

System.out.println(b);

}

}

日期处理,取得从1970到现在的毫秒数,格式为yyyy-MM-dd-HH:mm:ss再转换成String输出。

package com.xiaofei.zuoye;

public class demo09 {

public static void main(String[] args) {

java.util.Date date = new java.util.Date();

//取得从1970年到现在的毫秒数

long now = date.getTime();

//格式化日期

java.text.SimpleDateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

//转为字符串

String dateStr = df.format(date);

System.out.println(dateStr);

}

}

不使用中间变量 把两个变量的值互换

package com.xiaofei.zuoye;

public class demo06 {

public static void main(String[] args) {

// TODO Auto-generated method stub

int a = 20;

int b = 30;

a = a*b;

b = a/b;

a = a/b;

System.out.println("a="+a+" b="+b);

}

}

冒泡排序

package com.xiaofei.zuoye;

import java.text.FieldPosition;

import javax.naming.ldap.SortControl;

public class demo07 {

public static void main(String[] args) {

int[] list = {20,8,9,56,48,52,96};

for(int i = 0;i<list.length;i++){

System.out.println(list[i]+" ");

}

System.out.println("\n");

sort(list);

for(int i = 0;i<list.length;i++){

System.out.println(list[i]+" ");

}

}

private static void sort(int[] list) {

int temp;

for(int i = 0;i<list.length;i++){

for(int j=i+1;j<list.length;j++){

if(list[i]>list[j]){

temp = list[i];

list[i] = list[j];

list[j] = temp;

}

}

}

}

}

题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

package com.xiaofei.zuoye;

import java.util.Scanner;

public class demo10 {

public static void main(String[] args) {

int i = 0;

int LetterCount = 0;

int SpaceCount = 0;

int NumberCount = 0;

int OtherCount = 0;

Scanner in = new Scanner(System.in);

System.out.println("请输入一个字符串:");

String str = in.nextLine();

//将字符串转化为字符数组

char[] ch = str.toCharArray();

for ( i = 0; i < str.length(); i++) {

if(Character.isLetter(ch[i])){

LetterCount++;

}

if(Character.isSpace(ch[i])){

SpaceCount++;

}

if(Character.isDigit(ch[i])){

NumberCount++;

}

else{

OtherCount++;

}

}

System.out.println("字符的个数为:"+LetterCount);

System.out.println("空格的个数为:"+SpaceCount);

System.out.println("数字的个数为:"+NumberCount);

System.out.println("其他字符个数为:"+OtherCount);

}

}

编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。

package com.xiaofei.zuoye;

public class demo08 {

public static void main(String[] args) {

String srcStr1 = "我ABC";

String srcStr2 = "我ABC汉DEF";

splitString(srcStr1,4);

splitString(srcStr2,6);

}

public static void splitString(String src, int len) {

int byteNum = 0;

if(null==src){

System.out.println("The source String is null");

return;

}

byteNum = src.length();

byte bt[] = src.getBytes();//将String转换为byte字节数组

if(len>byteNum){

len = byteNum;

}

//判断是否出现了截半,截半的话ASC码应该是小于0的值

if(bt[len]<0){

String subStrc = new String(bt, 0, --len);

System.out.println(subStrc);

}else{

String subStrc = new String(bt, 0, len);

System.out.println(subStrc);

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: