天天看点

JAVA_XXBJ_ALL一、变量二、数据类型三、运算符四、结构语句:五、数组六、方法七、面向对象八、线程九、图形用户界面

一、变量

1、Java命名规范:

1.驼峰命名法   studentName  (不报错)
        2.标识符由字母数字和特殊符号组成(报错)
               注意:不能以数字开头
                    特殊符号仅仅局限为:¥ $ _
        3.类名的首字母要大写(不报错)
        4.不能使用关键字来命名(报错)
        5.不建议使用中文来命名(不报错)
           

2、变量:可以改变的量(数据)。

1、本质:是一个存储空间,存储的是用户需要用到的数据。
        2、为什么要使用变量的存在?
                 通过变量来存储用户需要的数据,程序通过操作变量来间接的达到操作数据的目的。
            比直接操作数据更加方便和安全。
        3、如何去使用变量?
                 语法: 数据类型 变量名;---------声明一个变量
                  初始化一个变量:声明 + 赋值。 int a = 1;
           

*经典面试题:声明一个变量的同时有没有开辟存储空间?

声明一个变量的同时开辟了存储空间。
                因为:变量存在的意义就是存储数据,如果没有开辟存储空间的话,该变量不能被赋值。
             该变量将没有意义。
           

*经典面试题:没有被初始化的变量能不能被直接访问?

不能,否则会报编译错误。
           

二、数据类型

1、Java中的数据类型: 基本数据类型 、引用类型

Java中的基本数据类型8种:
          整数类型:byte(字节型)< short(短整型)< int(整形) < long(长整型)
          浮点型(小数类型):float double
              float(单精度浮点型):
              double(双精度浮点型)常用:
          字符型:char
              char类型可以存储一个中文汉字,占2个字节。
          布尔型(开关类型):boolean
      引用类型:JDK类库自带的,用户自定义的。
           

2、字符串的链接:

+:连接符的使用,字符串与字符串之间的+是连接符
  字符串旁边的+都是连接符
           

3、数据类型的转换:

1、byte short char 在进行数学运算的时候,先自动转化为int类型的整数,然后再进行数学运算。
    2、在Java中,所有整数的直接量 都默认是int类型。
           

三、运算符

1、运算符:

赋值运算符: =
      数学运算符:+ - * / %        
      高级赋值运算符:+= -= *= /= %=
      关系运算符:> < >= <= == != 运算的最终结果是bool类型
      逻辑运算符:&& !
      位移运算符:>> <<
      三目运算符:表达式1 ?表达式2 : 表达式3
           

*经典面试题:&& 与 & 的异同点:

相同点:
       二者都满足 见false为 false。表达式1 && 表达式2,表达式1和表达式2
       有任意一个为false,整体的结果为false,二者都为true,结果才为true。
   不同点: 
        && :当表达式1为false时候,表达式2不执行。
        & : 无论表达式1是true,还是false,表达式2都依然执行。
   ||:短路或     &&:短路与
           

四、结构语句:

1、条件控制

if(表达式){
       语句块1;
     }else{
       语句块2;
     }
     如果条件表达式的结果为true,执行语句块1,否则执行语句块2。
   
if(表达式){
     }else if(表达式){
     }else{
     }
           

2、多分支结构(选择分支结构)switch case

switch(获取值){//获取值:整数//1.6之后可以字符串
         case 值1:
             语句块1;
             break;
         case 值2:
             语句块2;
             break;
           ...
         default:
             语句块n;
     }
           

3、循环结构

1、while循环
        语法结构:
          while(循环条件){
              循环体;
          }
       循环条件:可以是一个布尔类型的表达式,也可以是布尔类型的值
      while循环特点:
           不限次数的循环,满足某一条件的时候,跳出循环。
     while循环嵌套:
         while(){//外循环
           while(){
           //内循环}
           }
    2、do while循环
        语法结构:
          do{
           循环体;
           }while(循环条件);
           //特点:先执行一次,然后再进行判断是否满足循环。
                 3、for循环
        语法结构:
            for(循环变量;循环条件;循环变量变化方式){
                循环体;
            }
           

4、跳出循环

break:跳出当前循环。
    continue:终止本次循环,进入下次循环。
    return:直接结束所有循环(结束当前循环所在的方法,return后面的内容,都不再执行)
           

五、数组

1、创建数组(数组的初始化)有两种方式: 静态创建,动态创建

静态创建:创建数组的同时,开辟存储空间,且给存储空间赋值。
                int [] arr {1,2,3,4,5};
      动态创建:数据类型 [] 数组名 = new 数据类型[数组长度]
           ex:  int [] arr = new int [4];
           

2、数组的复制:

1.假复制
    2.数组元素的复制:System.arraycopy(源数组 ,源数组的起始位置 ,目标数组 ,目标数组的起始位置,复制的元素个数);
    3.数组的复制:Arrays.copyOf(源数组, 长度);
    4.修改数组的长度
3、数组的排序:
    Arrays.sort(数组名);
           

六、方法

1、语法结构:

修饰符 static 返回值类型 方法名(参数列表){
           方法体;        
      }
           

2、含义:

返回值类型:
        数据类型: 基本数据类型  引用类型
        关键字:void
    方法名:符合Java的命名规范
    参数列表:可以有0个或多个参数
    方法体:是方法的具体执行内容
           

七、面向对象

1、特征

封装、继承、多态
           

2、构造方法(函数)/构造器:

定义:方法名和类名相同,且没有返回值类型的方法,叫做构造方法。
       无参构造方法:创建对象
       有参构造方法:创建对象 传值
      作用:1.创建对象。
             2.传值。
           

*经典面试题:面向对象的特征

封装、继承、多态    
           

3、类和对象

类(类型):是具有相同特性和行为的对象的抽象。//Person
      对象:是类的一个代表(实例化)//类的实例化    //Person中的某一个人 (名字 学号 年龄)
           对象可以是抽象的,也可以是非抽象的。
           一切皆为对象。//能看到的,看不到的(空气)                                                                                        
           

4、继承 关键字:extends

子类 继承 父类:Son extends Father
    子类可以继承(拥有)父类可被继承的功能和属性(私有化除外),
    同时还可以创建自己的功能和属性。
    注意:一个类只能 继承一个父类。
    在Java当中,继承关系是单继承关系。
        Object是所有类的父类。(顶级父类)//默认继承
           

5、多态:

是同一个行为具有不同表现形式的能力。(同一种事物的不同表现形式),多体现在方法上面。
*经典面试题:实现多态的两种机制是什么?并分别进行解释说明。
    重载和重写
     重载:在同一个类当中,方法名相同,参数列表不同,叫做重载。
     重写(覆盖):在继承关系当中,方法签名相同(方法名和参数列表都相同),方法体不同,叫做重写。
           

6、向上造型:父类声明子类对象。

父类声明子类对象:ex:Father s = new Son();
         该对象(S)拥有的属性和方法都是父类的。但是当调用子类重写父类的方法时,
         编译期间执行的是父类的方法,运行期间执行的是子类的方法。
           

7、this、super

this关键字:指代当前对象。
      this(参数列表):可以调用本类里面的其他构造方法,具体调用哪个构造方法,
          根据this方法中的参数列表来确定。
          特殊情况:this方法只能放在构造方法的第一行。
      super:super指代父类的对象。
      super方法,可以调用父类的构造方法,根据super方法的参数列表确定具体调用哪一个构造方法
           

*经典面试题:this()和super()可不可以同时出现?

不能。因为this()和super()都必须放在构造方法的第一行。有冲突,二者不能同时出现
           

8、抽象:

关键字:abstract
      抽象类:用abstract修饰的类叫做抽象类。
      抽象方法:用abstract修饰的方法叫做抽象方法。
      能够定义(存储)抽象方法的类一定是抽象类。√
      抽象类里面一定要有抽象方法。×         
           

9、接口:

接口是一个特殊的抽象类,接口中的方法都是抽象方法,和常量。(解决类单一继承问题)
      关键字:interface
    类和接口的关系是实现,类可以实现接口。
           

10、final:

final修饰变量,不能被更改
        final修饰的方法不能被重写
        final修饰的类:不能被继承
        static final配合修饰的是常量
        String类被final修饰
           

八、线程

创建线程的两种方式:继承Thread类、实现Runnable接口
        线程的生命周期:
       创建线程(两种方式)----就绪状态(start方法,启动线程)-----运行状态(执行run方法)--
       阻塞(休眠)状态---死亡状态(线程结束)
           

九、图形用户界面

public class JFrameTest {
 /**
  * 创建一个800×400的窗体,并设置背景颜色。
  */
 public static void main(String[] args) {
      // 1、创建一个窗体(JFrame)的对象。
      JFrame frame = new JFrame();
      // 3、设置窗体的宽高为800×400px。
      frame.setSize(600, 400);
      // 4、设置窗体的坐标位置居中。     frame.setLocation(200, 100);
      frame.setLocationRelativeTo(null);
      // 5、设置默认关闭按钮功能(关闭界面的同时结束程序)。
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      // 6、设置窗体的大小不可被更改。
      frame.setResizable(false);
      // 7、取消窗体边框。
      frame.setUndecorated(true);
      
      
 /*// 8、设置窗体的背景颜色。
      frame.setBackground(Color.BLACK);*/
      
// 8、创建一个面板对象panel。
      JPanel panel = new JPanel();
      // 9、设置面板颜色。(自制/选择)
      panel.setBackground(new  Color(182,10,200));//panel.setBackground(Color.BLACK);
      // 10、窗体添加面板。
      frame.add(panel);
      // 2、设置窗体可见。
      frame.setVisible(true);
 }
 }