Java重新来过二(面向对象,变量,基础笔试面试题三道)

一、面向对象

1、类和对象

类就像一个模板,根据这样一个模板,可以创建一个个的具体的英雄

一个个具体的英雄,就叫一个个的对象

new Hero()就是java中创建一个英雄对象的意思

public class Hero {
     
    String name; //姓名
     
    float hp; //血量
     
    float armor; //护甲
     
    int moveSpeed; //移动速度
     
    public static void main(String[] args) {
        Hero garen =  new Hero();
        garen.name = "盖伦";
        garen.hp = 616.28f;
        garen.armor = 27.536f;
        garen.moveSpeed = 350;
         
        Hero teemo =  new Hero();
        teemo.name = "提莫";
        teemo.hp = 383f;
        teemo.armor = 14f;
        teemo.moveSpeed = 330;
    }  
     
}

Hero h = new Hero()             //实例化一个对象(h为实例变量,new Hero()为一个对象)

2、属性

一个英雄有姓名,血量,护甲等等状态,这些状态就叫做一个类的属性

属性类型(八个基本类型):following below

属性名称(一般都是小写,多个单词为驼峰式写法):属性也是变量,需要满足变量的命名规则

                                                                                                                                     变量命名只能使用字母 数字 $ _ 
                                                                                                                                     变量第一个字符 只能使用 字母 $ _ 
                                                                                                                                     变量第一个字符 不能使用数字 

                                                                                                        (尽量使用完整的单词进行命名,而非缩写)

3、方法

能做什么,在类里面就叫做方法

方法是一个类的动作行为,所以一般都是以动词开头的,比如 keng ... 
如果有多个单词,后面的每个单词的第一个字母使用大写 
比如 addSpeed

二、变量

1、变量的定义是: 用来命名一个数据的标识符

int year = 1949;


int 是数据类型,表示是整数
year 是一个标识符
= 是赋值操作符
1949 是一个数字类型的值
; 表示该行结束

year 这个标识符就是一个变量,它代表1949这个值

2、基本变量类型

整形:存放整数                   byte8    short16   int32   long64(8个字节)

字符型:存放一个字符        char16     (值用单引号表示)

浮点型:                              float32   double64(默认的小数值是double类型的)

             所以 float f = 54.321会出现编译错误,因为54.321的默认类型是 double,其类型 长度为64,超过了float的长度32 
             在数字后面加一个字母f,直接把该数字声明成float类型 
             float f2 = 54.321f, 
             这样就不会出错了

布尔型:用于表示真假          boolean        长度为1

              虽然布尔型真正存放的数据是0(false) 1(true)
              但是,不能直接使用0 1 进行赋值

byte  char  short  int  float  long  double  boolean

String类型并不是基本类型,String类型是Immutable的,一旦创建就不能够被改变

3、字面值

创建一个Hero对象会用到new关键字,但是给一个基本类型变量赋值却不是用new. 因为基本类型是Java语言里的一种内置的特殊数据类型,并不是某个类的对象。 
给基本类型的变量赋值的方式叫做 字面值,如下所例: 

float hp = 313f;

int armor = 24;

八进制:

public class HelloWorld {
    public static void main(String[] args) {
        long val = 26L; //以L结尾的字面值表示long型
        int decVal = 26; //默认就是int型
        int hexVal = 0x1a; //16进制
        int oxVal = 032; //8进制
        int binVal = 0b11010; //2进制
        System.out.println(oxVal);
    }
}

科学计数法表示double: 

public class HelloWorld {
 
    public static void main(String[] args) {
        float f1 = 123.4F;// 以F结尾的字面值表示float类型
        double d1 = 123.4;// 默认就是double类型
        double d2 = 1.234e2;// 科学计数法表示double
    }
}

转义    \   反斜杠

public class HelloWorld {
 
    public static void main(String[] args) {
        String name = "盖伦";
        char a= 'c';
 
        //以下是转义字符
        char tab = '\t'; //制表符
        char carriageReturn = '\r'; //回车
        char newLine = '\n'; //换行
        char doubleQuote = '\"'; //双引号
        char singleQuote = '\''; //单引号
        char backslash = '\\'; //反斜杠
         
    }
}

4、类型转换

short和char长度一样,但也需要强转: 

public class HelloWorld {
 
    public static void main(String[] args) {
 
        char c = 'A';
        short s = 80;
         
        //虽然short和char都是16位的,长度是一样的
        //但是彼此之间,依然需要进行强制转换
        c = (char) s;
        //直接进行转换,会出现编译错误
        s = c;
         
    }
}

 强制转换的意思就是,转是可以转的,但是不对转换之后的值负责。 风险自担,后果自负

查看一个整数对应的二进制的方法:Integer.toBinaryString(k);

public class HelloWorld {
  
    public static void main(String[] args) {
  
        byte b = 5;
        int i1 = 10;
        int i2 = 300;
          
        b = (byte) i1;
        //因为i1的值是在byte范围之内,所以即便进行强制转换
        //最后得到的值,也是10
        System.out.println(b);
          
        //因为i2的值是在byte范围之外,所以就会按照byte的长度进行截取
        //i2的值是300,其对应的二进制数是 100101100
        //按照byte的长度8位进行截取后,其值为 00101100 即44
        b =(byte) i2;
        System.out.println(b);
         
        //查看一个整数对应的二进制的方法:
        System.out.println(Integer.toBinaryString(i2));
         
    }
}

5、作用域

当一个变量被声明在类下面
变量就叫做字段 或者属性、成员变量、Field
比如变量i,就是一个属性。
那么从第2行这个变量声明的位置开始,整个类都可以访问得到
所以其作用域就是从其声明的位置开始的整个类


如果一个变量,是声明在一个方法上的,就叫做参数
参数的作用域即为该方法内的所有代码
其他方法不能访问该参数
类里面也不能访问该参数


声明在方法内的变量,叫做局部变量 
其作用域在声明开始的位置,到其所处于的块结束位置


基础笔试面试题1

属性的作用域在方法中,参数的作用域也在方法中,如果属性和参数命名相同了的话? 那么到底取哪个值?

                      就近取值:          输出为  5

public class HelloWorld {
    int i = 1; //属性名是i
    public void method1(int i){ //参数也是i
        System.out.println(i);
    }
     
    public static void main(String[] args) {
        new HelloWorld().method1(5);
        //结果打印出来是 1还是5?
    }
}

6、final

当一个变量被final修饰的时候,该变量    只有一次赋值的机会

基础笔试面试题2

public class HelloWorld {
 
    public void method1(final int j) {
        j = 5; //这个能否执行?
    }
}

不可以,因为在调用方法的时候,就一定会第一次赋值了,后面不能再进行多次赋值

7、表达式

以;结尾的一段代码,即为一个表达式                        //一个空;也是一个表达式

8、块

从{ 开始 到对应的 } 结束,即一个块

基础笔试面试题3

普通块和静态块的执行有什么区别?

        普通块代码又叫构造代码块。  作用:可以给所有对象进行初始化。    表达形式: { 执行语句; }

        静态代码块,随类加载有且只进行一次。  作用:给类进行初始化。    表达形式: static { 执行语句; }

执行先后顺序不同,先执行带static修饰的代码块

猜你喜欢

转载自blog.csdn.net/DH2264664169/article/details/85120609