zoukankan      html  css  js  c++  java
  • 总结一下Java基础知识

    重中之重-----------基础

        底层结构决定上层建筑,所以,基础很重要。

        自信心

     在开始说基础之前先说明一下自信心的重要性,没有自信心学什么东西都学不好。

        核心自信*****

     核心自信从三个方面来说

         客观自信

        通过实践,行动,积累成功经验,来反哺主观自信。

         主观自信

        改变思维认知,扭转以往的错误思维。

       生理状态

        决定是否有能量面对主观焦虑。

      以上是正确的自信心培养方式, 举例一些反例,来说明核心自信和条件自信的区别:

      大众价值观(有钱了就自信)

      裙带关系(有朋友陪伴就觉得自信)

      特殊技能(对某方面相对擅长或有经验,在使用该技能时,就觉得自信)

      角色扮演(当自己强制扮演某个角色时就特别有自信,当被戳穿时,就会失去自信)

    总结:

      通过外在条件增强自己的自信心。 就是需要按下一个按钮才能提升自己的自信心。 过度依赖条件自信,会减弱自信。

    再一个就要说如何学习,好多人都是一腔热血一身混劲不知道怎么用:

      学别的不知道,但是学java做好以下入个门是绝对可以的了。

    如何学习?

    关于实践:

        多练
        多调
        多想
        方向+勤奋+坚持
        程序员是敲出来的
        不要机械性的照抄,最好能够将老师的代码整理出一个思路,将老师的代码关闭之后去实现这个思路。这样慢慢的编程思想就有了。

    关于阅读:

                                                                                                                                                                                                                                                       ----------------------这一页是摘自 Head First 设计模式一书。

    与java无关的话说完了,接下来就说一些java基础,当然我不会从计算机组成和jvm(java虚拟机)说起,因为文章会显得太冗余也不适合初学者,而我也不会把java说的很细致,既然要学这门语言,那我就默认为你会看好多相关书籍,那些书籍各有所长,会细致介绍这门语言,我只是在这点出几个点和一些基础概念:

    public class HelloWorld{

      public static void main (String [] args){

       String helloWorld = "hello world";

       System.out.print(helloWorld);

     }

    }

    既然要学java,hello world肯定写了,java运行和编译环境搭建了,如果没搭建去百度搭建的方法。

    那我就从helloworld说起

      1.1 什么是标识符?

        标识符就是程序员在编写程序时,给类/变量/方法等起的名字,换句话说所有我们自己可以定义的名字统称为标识符(如:上面代码中的 HelloWorld,helloWorld )

      1.2 什么是关键字?

         关键字是系统有特殊含义的标识符, 这些有特殊含义的标识符,程序员在起名时,不能与关键字重名(会出问题的),换句话说关键字都是系统定义的。

         补充:关键字是不用刻意去背记的,常出现的稍加记忆,在以后的使用中自然会记住。

      1.3 标识符的命名规则

          1)标识符由字母,数字,下划线和$组成;

          2)第一个字符不能是数字

          3)不能与关键字重名

    注意:

       1) 在Java 中是严格区分大小写的, Abc 和abc 是两个不同的标识符

       2) 标识符原则上没有长度限制

       3) 命名时最好做到见名知义

       4) 要符合命名规范

       5) 程序员在命名时,一般不使用$

    2. 数据是什么?

      数据就是信息在计算机中的载体.

      信息: 老师手里有十个苹果

      数据: 10 、’苹果

      在计算机中的数据存储在内存和硬盘中不管是内存中,硬盘中,还是CPU 中处理的数据都是0 和1.

    3.字面量

      Java 程序是用来处理数据的

      数据分为不可变的和可变的两类.

        不可变的又分为字面量和final 常量.

          字面量又称为直接量. 包括所有的整数,小数,字符,布尔,字符串和null

      final常量为不可改变的量,暂时不用理会。

    4.变量

      变量就是在程序的运行过程中,它的值可以发生变化的量。

      根据定义变量的位置,可以把变量分为局部变量和成员变量

        成员变量: 在类中定义的变量

        局部变量: 在代码块中定义的变量

        变量的作用域:就是变量在哪个范围内有效

        成员变量:整个类

        局部变量:从定义的位置开始,直到包含它的大括弧结束 

    5.数据类型的分类

      在Java 中把数据类型分为基本类型和引用类型两大类

      基本类型又包括:整数类型,小数类型,字符类型和布尔类型四部分 引用类型包括:类,接口,数组

      自动类型转换 byte -->short -->int -->long -->float -->double char -->int -->long -->float -->double

      强制类型转换:不能进行自动类型转换时,可以进行强转 (顾名思义强制就是将某一数据类型强行转换为另一数据类型)

    6.运算符

      Java 程序是用来处理数据的 通过运算符实现对数据的处理 运算符有: 算术,关系,逻辑,赋值,条件,字符串连接....

    7.基本的输入和输出

    /*
    从键盘上读取数据, 使用Scanner 类, 需要先把这个类导入
    System,String 也是系统定义的类,这两个类在java.lang 包中
    系统会自动导入java.lang 包中的类
    */
    import java.util.Scanner; //Step1, 导入Scanner 类
    class Demo06 {
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in); //Step2, 创建Scanner 对象
    //System.in 代表系统的标准输入设备,即键盘; System.out 代表系统的标准输出设备,即显示器
    System.out.println("请输入一个整数"); 
    int i = sc.nextInt(); 
    
    System.out.println("请输入一个小数");
    double dd = sc.nextDouble(); 
    
    System.out.println("请输入一个字符串");
    String str = sc.next(); 
    
    System.out.println("请输入一个布尔值");
    boolean flag= sc.nextBoolean(); 
    
    //从键盘上读取字符存储到char 类型变量中,
    System.out.println("请输入一个字符");
    String ccText= sc.next(); //先以字符串的形式读取
    char cc = ccText.charAt(0); //再从字符串中把字符分离出来
    //字符串中有一个方法charAt(index) 可以返回字符串中某个位置上的字符
    System.out.println("cc==" + cc);
        }
    }
    基本的输出
    1. 在屏幕上打印信息后换行
    System.out.println("Hello World!");
    2. 只打印不换行
    System.out.print("123");
    3.格式输出
    System.out.printf("name:%s
    " , "laoWang"); //%s 输出字符串
    int age = 33;
    System.out.printf("age:%d", age); //%d 输出整数
    System.out.printf("
    0123456789
    ");
    System.out.printf("age:%6d
    ", age); //占6 位,默认右对齐
    System.out.printf("%-6dage
    ", age); //左对齐
    System.out.printf("小数:%8.2f", 12.345678); //%f 输出小数

    8.控制流程和控制语句:

    什么是流程控制?

      流程控制就是用来控制计算机指令的执行顺序.流程控制有三种基本结构:顺序结构,选择结构,循环结构重复的执行某段代码

    为了实现控制流程于是就有了控制语句

    /* if 语句
    选择结构包括if 语句和switch 语句
      格式一:
             if( 条件){
                语句块
             }
            先判断条件, 如果条件成立就执行大括弧中的语句块;如果条件不成立就不执行
    
     格式二:
       if ( 条件){
        语句块1
      }else{
        语句块2
      }
      判断条件, 如果条件成立就执行语句块1; 如果条件不成立就执行语句块2
    
    switch 语句
      switch( 表达式) {
        case 常量1 :
            语句块1;
            break;
        case 常量2 :
            语句块2;
            break;
        case 常量3:
            语句块3;
            break;
        case 常量4 :
            语句块4;
            break;
        default :
          语句块n
          break;
      }
    
    1) 先计算switch 表达式的值, 找与该值匹配的case 常量值, 转到相应的Case 子句执行;
    2) 在case 子句中遇到break 语句就跳出switch 结构;
    3) 如果所有的case 常量值都不匹配,则执行default 子句
    4) case 后面跟的必须是常量,并且常量值不能重复
    5) case 子句没有先后顺序
    6) 即使default 子句也可以放在其他case 子句前面, 总是在所有的case 常量值都不匹配的情况下才会执行
    7) 如果case 子句没有break 语句,程序会继续向下执行下面的case 子句, 这是case 的穿透, 直到遇到break 语
    句或者执行完switch 语句
    8) switch 后面的表达式可以是int/String/枚举类型, byte/short/char 可以自动提升为int 类型,也可以.
    
    switch 表达式为枚举类型
    交通红绿灯, 如果是绿灯就通过,红灯就停,黄灯就等--------(switch 表达式为枚举类型)
    */
    import java.util.Scanner;
    class Demo07 {
    public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
    //使用枚举类型定义变量,并赋值
    // TrafficLight light = null;
    TrafficLight light =TrafficLight.Red;
    // System.out.println( light );
    System.out.println("请输入Red,Green,Yellow 代表信号灯");
    String lightStr = sc.next();
    //把字符串转换为枚举类型
    light = TrafficLight.valueOf( lightStr );
    switch ( light ){
    case Red:
    System.out.println("停");
    break;
    case Green:
    System.out.println("行");
    break;
    case Yellow:
    System.out.println("等");
    break;
    }
    }
    }
    /*
    1)enum 是一个关键字,用来定义枚举类型. 就类似于class 用来定义类
    2) enum 后面跟的是枚举类型名, TrafficLight 是一个数据类型
    3) enum 中的内容也是用一对大括弧括起来
    4) TrafficLight 这个数据类型定义的变量只能取值Red, Green, Yellow;
    */
    enum TrafficLight{
    Red, Green, Yellow;
    }
    
    while 循环
    while( 条件){
    语句块,又称为循环体
    }

    先判断条件是否成立, 如果条件成立就执行语句块(循环体), 执行完循环体之后再判断条件是否成立, 如果条
    件成立继续执行循环体,如果条件不成立,就退出循环

    break
    应用场景:
    1) 在switch 结构中, 可以跳出switch 结构
    2) 在循环中, 可以中断循环

    do{}while()
    do {
    循环体
    }while( 循环条件);
    先执行循环体,再判断循环条件是否成立;如果条件成立继续执行循环体, 否则退出循环

    任何循环都可以使用while 循环
    do...while 循环的使用场景
    一般情况下,如果循环条件需要用户输入或者需要通过循环体计算时,可以使用do..while 循环

    for 循环
    for( 初始化表达式; 条件表达式; 循环体后表达式){
    循环体
    }
    1)先执行一次初始化表达式;
    2)判断条件表达式是否成立,如果成立就执行循环体, 如果不成立就退出循环
    3) 执行循环体
    4) 执行循环体后表达式
    5)循环执行第2)~4),
    注意:
    1)一般情况下,在初始化表达式中定义一个在for 循环中使用的局部变量
    2)在循环体后表达式中修改循环控制变量的值

    所有的while 循环都可以使用for 循环,同样,所有的for 循环都可以使用while 循环
    for 循环的使用场景
    一般情况下,循环次数确定时,使用for 循环
    循环次数不确定时,使用while 循环

    9.什么是方法?

    方法就是为了完成某个功能而编写的一段代码.
    println() 方法可以在屏幕上打印信息
    next() 方法可以从键盘上读取一个字符串
    random() 方法返回一个[0,1)之间的随机小数
    如果以后想使用这个功能时就直接调用这个方法即可.
    方法的优点:
    1)使代码理念简洁
    2)实现代码复用
    3)方便维护

    4.2 方法的定义
    [修饰符] 返回值类型方法名( 方法参数列表) {
    方法体
    }
    1)方法的修饰符有: public/protected/private, static , abstract, final ,synchronized 等
    2)返回值类型是指调用方法时返回这个值的数据类型. 如调用Math.random()方法返回一个[0,1)之间的小数,那
    么random()方法的返回值类型应该是double 类型; 如println()方法是在屏幕上打印信息,不需要返回值,这个方法的返
    回值类型用void 来表示; 如nextInt()方法从键盘上读取一个整数并返回,这个方法的返回值类型就是int 类型
    3)方法名就是程序员起的名字,它一般是一个动词, 第一个单词小写,其他每个单词首字母大写
    4)方法名后面小括弧中的内容是方法参数, 方法参数的作用是用来接收一个数据. 如println()方法在屏幕上打印信息,在调用println()方法时,需要给这个方法指定要打印的内容, println()方法就是通过参数来接收数据的; 如果方法不需要参数,如random()方法没有参数,小括弧不能省
    5)方法体用一块大括弧括起来

    4.3 方法的调用
    1) 在程序中,定义了方法, 该方法在没有调用之前,不会执行
    2) 通过方法名来调用方法
    3) 如果在定义方法时,给方法指定了参数, 在调用方法时,必须传递对应的值. 参数个数一样,参数类型要兼容
    4) 如果方法没有返回值,即方法的返回值类型为void, 在调用方法时,这条调用语句只能单独存在
    5) 如果方法有返回值,在调用方法时, 可以把方法的返回值保存到一个变量中;可以把方法的返回值打印到屏幕上;可以把方法的返回值作为其余表达式的一部分

    4.4 形参与实参
    1) 在定义方法时,指定的参数称为形式参数,简称为形参在调用方法时,给方法传递的参数称为实际参数,简称为实参
    2) 在定义方法时,形参不存在,相当于一个占位符, 表示可以接收某个类型的数据
    3) 在调用方法时, 在栈区中给方法分配存储空间, 同时给方法的形参分配存储空间,这时形参才存在
    4) 在调用方法时,把实参的值传递给形参
    5) 形参与实参是相互独立的,在方法中对形参进行了重新赋值,不影响实参的值
    6) 当方法执行完毕,在栈区中给方法分配的存储空间就被释放, 方法的形参及局部变量也被释放

    /*方法的重载
    * 在同一个类中,方法名相同,方法参数列表不同(包括参数个数,或者参数类型不同)
    *
    *为什么重载?
    * 相同的功能,使用同一个方法名, 如在屏幕上打印任意类型的数据都可以使用println()方法
    */

    10.面向对象与面向过程
      面向过程强调的是解决问题的步骤, 各个步骤之间是紧密相关的;
      面向对象是以事物为中心,通过给事物发送消息来完成工作.
    2 类与对象的概念
      现实世界中客观存在的实体称为对象.
      万事万物皆对象
      类是所有对象相同部分的抽象
      类是对一组对象相同特征和相同行为的抽象描述.
      对象是具体的,类是抽象的
      类就可以看作是图纸(模板), 对象是根据图纸设计而成的实物
    3.如何定义类
      在现实世界中,认识自然的规律是先有对象,再有类.
      在Java 中,先有类, 通过类定义对象
    格式:
    [修饰符] class 类名{
      //静态特征, 用变量来保存
      //行为, 用方法来表示
    }
    1)类的修饰符有:public , abstract, final
    2)类名在命名时, 每个单词的首字母大写
    4 定义对象
    类名 对象名= new 类名() ;
    /*
    *1)类是一种引用数据类型,就可以定义变量
    * 2)给类定义的变量进行初始化时, new 类名();
    * 3)类定义的变量,准确的说是对象的引用, 一般就简单的称它为对象
    * 4)类定义了对象之后,对象就有了类中定义的成员变量和成员方法
    * 对象通过成员运算符(.)来访问成员变量和成员方法
    * 5)一个类可以定义多个对象
    * 6)同一个类的对象可以相互赋值
    */

    空指针异常
      当一个对象没有初始化时,或者说这个对象的值为null 时, 访问这个对象的成员变量或者成员方法就会产生空指针异常.

     

      

  • 相关阅读:
    学习之路 1-2
    学习之路 1-1
    【LifecycleException】: org.apache.catalina.LifecycleException: A child container failed during start 解决
    【JAVA】java中int转成String位数不足前面补零例如:1->001
    【Docker】 Error running deviceCreate (CreateSnapDeviceRaw)
    【java】解决java compiler level does not match the version of the installed java project facet
    【Mysql】SpringBoot阿里Druid数据源连接池配置
    【JVM】JVM优化过程全记录
    【JavaScript】windows.open用法详解
    【Java】JavaMail 554错误解决方法
  • 原文地址:https://www.cnblogs.com/f-bob/p/9626351.html
Copyright © 2011-2022 走看看