zoukankan      html  css  js  c++  java
  • 2017/12/27java基础学习——遇到的不懂问题

    1)对于以下代码:

     1 package character;
     2 public class TestString {
     3     public static void main(String[] args) {
     4         String garen ="盖伦"; //字面值,虚拟机碰到字面值就会创建一个字符串对象
     5         String teemo = new String("提莫"); //创建了两个字符串对象
     6         char[] cs = new char[]{'崔','斯','特'};
     7         String hero = new String(cs);//  通过字符数组创建一个字符串对象
     8         String hero3 = garen + teemo;//  通过+加号进行字符串拼接
     9     }
    10 }

    [Q]:其中第五行创建了两个字符串对象,是指哪两个?

    [A]:new String()代表创建了一个String对象,但是也仅仅是创建了一个对象,没有办法访问它。另一个字符串对象是teemo,它是引用对象,用来指向创建的new对象。

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

    1 package character;
    2 public class TestString {
    3     public static void main(String[] args) {
    4         MyString str = new MyString();
    5     }
    6             /*这里会报错,因为String不能被继承*/
    7     static class MyString extends String{
    8     }
    9 }

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

     1 /**
     2     * 给点提示: 数字和字符之间可以通过互相转换
     3     *char c = 'A';
     4     *short s = (short) c;
     5     *通过这个手段就能够知道字符 a-z A-Z 0-9 所对应的数字的区间了
     6     *需要用到ASCII码对照表
     7     *代码如下:
     8     */
     9 package character;
    10 public class TestString {
    11     public static void main(String[] args) {
    12         //方法1
    13         char cs[] = new char[5];
    14         short start = '0';
    15         short end = 'z'+1;
    16         for (int i = 0; i < cs.length; i++) {
    17             while (true) {
    18                 char c = (char) ((Math.random() * (end - start)) + start);
    19                 if (Character.isLetter(c) || Character.isDigit(c)) {
    20                     cs[i] = c;
    21                     break;
    22                 }
    23             }
    24         }
    25         String result = new String(cs);
    26         System.out.println(result);
    27          
    28         //方法2
    29         String pool = "";
    30         for (short i = '0'; i <= '9'; i++) {
    31             pool+=(char)i;
    32         }
    33         for (short i = 'a'; i <= 'z'; i++) {
    34             pool+=(char)i;
    35         }
    36         for (short i = 'A'; i <= 'Z'; i++) {
    37             pool+=(char)i;
    38         }
    39         char cs2[] = new char[5];
    40         for (int i = 0; i < cs2.length; i++) {
    41             int index = (int) (Math.random()*pool.length());
    42             cs2[i] =  pool.charAt( index );
    43         }
    44         String result2 = new String(cs2);
    45         System.out.println(result2);
    46     }
    47 }

    20171217
    1)Java中的『.』是什么意思,如 System.out.println(s);?

    [A]:System是一个类,在类库中已经定义好,『.』表示该类调用println()方法。由于以下导入是默认执行的,故一般是不需要书写的。

    import java.lang.System;

    2)借助增强型for循环,可以很方便遍历。一个枚举都有哪些常量.

    1 public class HelloWorld {
    2     public static void main(String[] args) {
    3         for (Season s : Season.values()) {
    4             System.out.println(s);
    5         }
    6     }
    7 }

    3)[Q:疑问]Season.values()是地址吗?如果是,那么是谁的地址?
    [A:答案]:是地址,是枚举类型Season的地址,地址值为Season内的首个成员变量的地址。

    2018/01/01

    1)java中的this.的含义,如何使用。

    [A]:代表当前对象,在对象所调用的对象方法里使用,参考链接

    2018/01/03

    对象属性初始化有3种方式:

    1.声明该属性的时候初始化 

    2.构造方法中初始化

    3. 初始化块

    如下代码段:

     1 package charactor;
     2  
     3 public class Hero {
     4     public String name = "some hero"; 
     5      
     6     public Hero(){
     7         name = "one hero";
     8     }
     9     {
    10         name = "the hero";
    11     }
    12      
    13 }

    [Q]:那么设计方法判断这三种方式,谁先执行?谁后执行?

    [A]:设计一个类方法(如下)

    public static String getName(String pos){
    }
    在属性初始化的时候,调用这个方法的返回值。观察这个方法的输出顺序。代码如下:
     1 package charactor;
     2   
     3 public class Hero {
     4     public String name =Hero.getName("属性声明") ;
     5       
     6     public Hero(){
     7         name = Hero.getName("构造方法");
     8     }
     9     {
    10         name = Hero.getName("初始化块");
    11     }
    12      
    13     public static String getName(String pos){
    14         String result= "name "+pos;
    15         System.out.println(result);
    16         return result;
    17     }
    18      
    19     public static void main(String[] args) {
    20         new Hero();
    21     }
    22      
    23 }

    [追问Q]:在通过主方法执行的时候,为什么要实例化对象,即new Hero();这样做的原因,以及它执行代码段第4行、第6~8行、第9~11行的顺序是如何的。

  • 相关阅读:
    Java中 Jwt
    Python中Jwt
    jwt流程
    Vue Demons
    Vue基础
    Mysql
    MongoDb
    2020/03/07-基础复习day_02
    2020/03/07-基础复习day_01
    基于springboot+dubbo的简易分布式小Demo
  • 原文地址:https://www.cnblogs.com/lijiehua/p/8123692.html
Copyright © 2011-2022 走看看