Fork me on GitHub

JAVA学习笔记(未完结)

JAVA学习笔记

java环境配置指路大佬文章:李培冠的博客

非常详细的JDK+Tomcat的安装教程,跟着一步步做就对了,但我也安了很久,中间还是会因为一些不明原因的问题安不上,csdn基本能解决99%的问题

学习参考资源:

我是c语言起手的学习者,仅提供学习了基本c语言操作之后的学习视角。

java基本语法

详细基本语法请参考菜鸟教程以及教科书。

个人归纳要点:

  • java是强类型的语言,类、对象、方法都有类型

  • 帮大家重点区分几个概念(以下内容在菜鸟教程里都有,我摘抄出来的)

    • 修饰符:在定义类、方法、变量时都会出现,会且只会定义这三个

      • 访问修饰符

        • default(即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。

        • private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

        • public : 对所有类可见。使用对象:类、接口、变量、方法

        • protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

          附上表格一张,说明了访问权限

          修饰符 当前类 同一包内 子孙类(同一包) 子孙类(不同包) 其他包
          public Y Y Y Y Y
          protected Y Y Y Y/N(说明 N
          default Y Y Y N N
          private Y N N N N
      • 非访问修饰符

        • static:修饰类方法、类变量
        • final:修饰类、方法、变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
        • abstract:用来创建抽象类和抽象方法。
        • synchronized和volatile:主要用于线程的编程。
  • 面向过程的c在书写时,基本上都是一两千行的代码都写在同一个.cpp文件中。面向对象的java则基本都封装在不同的.java文件里,主程序可直接在同一个包的范围里调用其他.java文件中的类。

    如(该例由菜鸟教程提供,在教程中有详细说明):

    以下代码保存在名称为Employee.java的文件中

    package test1;
    public class Employee{
       String name;
       int age;
       String designation;
       double salary;
       // Employee 类的构造器
       public Employee(String name){
          this.name = name;
       }
       // 设置age的值
       public void empAge(int empAge){
          age =  empAge;
       }
       /* 设置designation的值*/
       public void empDesignation(String empDesig){
          designation = empDesig;
       }
       /* 设置salary的值*/
       public void empSalary(double empSalary){
          salary = empSalary;
       }
       /* 打印信息 */
       public void printEmployee(){
          System.out.println("名字:"+ name );
          System.out.println("年龄:" + age );
          System.out.println("职位:" + designation );
          System.out.println("薪水:" + salary);
       }
    }
    
    

    以下代码保存在EmpoyeeTest.java文件中

    package test1;
    public class EmployeeTest{
     
       public static void main(String[] args){
          /* 使用构造器创建两个对象 */
          Employee empOne = new Employee("RUNOOB1");
          Employee empTwo = new Employee("RUNOOB2");
     
          // 调用这两个对象的成员方法
          empOne.empAge(26);
          empOne.empDesignation("高级程序员");
          empOne.empSalary(1000);
          empOne.printEmployee();
     
          empTwo.empAge(21);
          empTwo.empDesignation("菜鸟程序员");
          empTwo.empSalary(500);
          empTwo.printEmployee();
       }
    }
    

    运行主函数,输出结果:

    名字:RUNOOB1
    年龄:26
    职位:高级程序员
    薪水:1000.0
    名字:RUNOOB2
    年龄:21
    职位:菜鸟程序员
    薪水:500.0
    
  • 运算符基本和c一致

    学到的新东西:

    • ​ 短路逻辑运算符:当使用与逻辑运算符时,在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了。

      public class LuoJi{
          public static void main(String[] args){
              int a = 5;//定义一个变量;
              boolean b = (a<4)&&(a++<10);
              System.out.println("使用短路逻辑运算符的结果为"+b);
              System.out.println("a的结果为"+a);
          }
      }
      
    • instanceof运算符:该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。摘抄如下

      使用格式:

      ( Object reference variable ) instanceof  (class/interface type)
      

      如果运算符左侧变量所指的对象,是操作符右侧类或接口(class/interface)的一个对象,那么结果为真。

      下面是一个例子:

      String name = "James";
      boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真
      

      如果被比较的对象兼容于右侧类型,该运算符仍然返回true。

      看下面的例子:

      class Vehicle {}
       
      public class Car extends Vehicle {
         public static void main(String[] args){
            Vehicle a = new Car();
            boolean result =  a instanceof Car;
            System.out.println( result);
         }
      }
      

      以上实例编译运行结果如下:

      true
      
  • 循环和c一致,在对于数组的处理上多了一个增强型的for循环

    语法格式

    for(声明语句 : 表达式)
    {
       //代码句子
    }
    

    对于数组s[N]来说相当于一个

    for(int i=0;i<lenth(s[N]);i++)
    

    用法实例

    public class Test {
       public static void main(String[] args){
          int [] numbers = {10, 20, 30, 40, 50};
     
          for(int x : numbers ){
             System.out.print( x );
             System.out.print(",");
          }
          System.out.print("\n");
          String [] names ={"James", "Larry", "Tom", "Lacy"};
          for( String name : names ) {
             System.out.print( name );
             System.out.print(",");
          }
       }
    }
    

条件语句、switch case|和c完全一致

各种包装类划分:Number&Math类,Character类,String类和StringBuffer类

  • Number类(类方法大概包含:数据类型转换、比大小以及是否相等、对象初始化、进制转换)

    • 包括对应基本数据类型的各种类

      Java Number类

      使用时基本上有两种情况:

      public class Test{
          public static void main(String args[]){
              Integer x = 5;
      
              System.out.println(x.toString());  //以x类调用类方法
              System.out.println(Integer.toString(12)); //以Integer类调用类方法
          }
      }
      
    • Math(类方法大概包含求绝对值、高斯函数(ceil和floor)、最大最小值、求对数、三角函数和角度弧度)

      基本上都是以Math类调用类方法

      public class Test{
          public static void main(String args[]){
              Integer a = -8;
              double d = -100;
              float f = -90f;    
                                                     
              System.out.println(Math.abs(a));
              System.out.println(Math.abs(d));    
              System.out.println(Math.abs(f));    
          }
      }
      
    • Character类(类方法大概包含判断是否是字母、数字、空白以及大小写,指定字母大小写,将字符转为长度为1的字符串)

      基本上都是以character调用类方法

      public class Test {
       
          public static void main(String args[]) {
              System.out.println(Character.isWhitespace('c'));
              System.out.println(Character.isWhitespace(' '));
              System.out.println(Character.isWhitespace('\n'));
              System.out.println(Character.isWhitespace('\t'));
          }
      }
      
    • String方法

posted @ 2022-03-14 13:55  郭幸坤  阅读(54)  评论(0编辑  收藏  举报
1