java基础学习——遇到的不懂问题

来源:互联网 发布:win10怎么安装java 编辑:程序博客网 时间:2024/06/05 05:26
1)对于以下代码:
package character;


public class TestString {


public static void main(String[] args) {
String garen ="盖伦"; //字面值,虚拟机碰到字面值就会创建一个字符串对象

String teemo = new String("提莫"); //创建了两个字符串对象

char[] cs = new char[]{'崔','斯','特'};

String hero = new String(cs);//  通过字符数组创建一个字符串对象

String hero3 = garen + teemo;//  通过+加号进行字符串拼接
}
}
其中语句:String teemo = new String("提莫"); //创建了两个字符串对象
疑问:创建了字符串对象teemo,还有一个对象是什么?


2)String 被修饰为final,所以是不能被继承的
package character;


public class TestString {


public static void main(String[] args) {
MyString str = new MyString();

}

        /*这里会报错,因为String不能被继承*/
static class MyString extends String{

}

}
3)创建一个长度是5的随机字符串,随机字符有可能是数字,大写字母或者小写字母


给点提示: 数字和字符之间可以通过互相转换
 
char c = 'A';
short s = (short) c;
 


通过这个手段就能够知道字符 a-z A-Z 0-9 所对应的数字的区间了


需要用到ASCII码对照表
代码如下:


package character;
 
public class TestString {
 
    public static void main(String[] args) {
   
        //方法1
        char cs[] = new char[5];
        short start = '0';
        short end = 'z'+1;
        for (int i = 0; i < cs.length; i++) {
            while (true) {
                char c = (char) ((Math.random() * (end - start)) + start);
                if (Character.isLetter(c) || Character.isDigit(c)) {
                    cs[i] = c;
                    break;
                }
            }
        }
        String result = new String(cs);
        System.out.println(result);
         
        //方法2
        String pool = "";
        for (short i = '0'; i <= '9'; i++) {
            pool+=(char)i;
        }
        for (short i = 'a'; i <= 'z'; i++) {
            pool+=(char)i;
        }
        for (short i = 'A'; i <= 'Z'; i++) {
            pool+=(char)i;
        }
        char cs2[] = new char[5];
        for (int i = 0; i < cs2.length; i++) {
            int index = (int) (Math.random()*pool.length());
            cs2[i] =  pool.charAt( index );
        }
        String result2 = new String(cs2);
        System.out.println(result2);
 
    }
}
2017.12.09
1)final修饰类
当Hero被修饰成final的时候,表示Hero不能够被继承,其子类会出现编译错误。
如下代码:
package charactor; 
public final class Hero extends Object {
    String name; //姓名
    float hp; //血量        
}
2)final修饰方法
Hero的useItem方法被修饰成final,那么该方法在ADHero中,不能够被重写。
如下代码:
package charactor;
 
import property.Item;
 
public class Hero extends Object {
        
    String name; //姓名
        
    float hp; //血量
        
    float armor; //护甲
        
    int moveSpeed; //移动速度
     
    public final void useItem(Item i){
        System.out.println("hero use item");
        i.effect();
    }    
     
    public Hero(){
        System.out.println("Hero的无参的构造方法 ");
    }
     
    public Hero(String name){
        System.out.println("Hero的有一个参数的构造方法 ");
        this.name = name;
    }
     
    public static void main(String[] args) {
        new Hero();
    }
      
}
3)final修饰引用


20171217
1)Java中的「.」是什么意思?
2)借助增强型for循环,可以很方便的遍历一个枚举都有哪些常量.
public class HelloWorld {
    public static void main(String[] args) {
        for (Season s : Season.values()) {
            System.out.println(s);
        }
    }
}
[Q:疑问]Season.values()是地址吗?如果是,那么是谁的地址?
[A:答案]:是地址,是枚举类型Season的地址,地址值为Season内的首个成员变量的地址。
原创粉丝点击