• java 基础语法


    教材:《Java核心技术 卷1:基础知识》Cay S.Horstmann
    体系结构中立 可移植性

    专有名词

    方法=method 特指类内部的函数function
    对象=object
    类=class

    开发环境

    • JDK + 文本编辑器(如Notepad++)
    • IDE如Eclipse

    命令行编译运行:
    javac new1.java生成class文件
    java new1 运行
    IDE运行

    文档 在线版

    格式

    package declaration 声明包
    import xxx 导入
    class definitions 定义类
    源文件名与public类名相同(同一源文件中仅有一个public类)

    数据类型

    • 基本数据类型
      • byte short int long
      • float double
      • char
      • boolean (=true或false,而非10)
      • 枚举
    • 引用数据类型
      • 接口
      • 数组

    在这里插入图片描述
    在这里插入图片描述

    变量和常量

    变量声明后需要初始化
    final声明常量

    运算符

    ±*/% ++ – = += -= > < == !=
    &&短路与 ||短路或 &与 |或
    位运算:只适合整型 ~非 &与 |或 ^异或 <<左移 >>右移 (符号位填充高位)>>>右移(0填充高位,对负数来说结果不同)

    类型转换

    自动转换
    自动提升 小范围->大范围
    强制转换,如double->int 用(int)
    String转其他:Integer.parseInt(str) Double.parseDouble(str)等
    其他转String: n+""或者String.valueOf(n)或者(String)n

    String

    内容不可更改的字符串(指的是可以往后append,但不能修改已有的某一个字符)

    String str=new String("abc")
    
    • 1

    内容可更改的字符串:StringBuffer,StringBuilder

    串连接:+String.join("1","2")
    子串 s.substring(start,end) [start,end)

    length()

    charAt(n),indexOf('e')
    equals() equalsIgnoreCase()注意相等判断不能用==

    StringBuffer

    s.append(str)
    s.insert(pos,str)
    s.delete(start,end)
    s.reverse()
    
    • 1
    • 2
    • 3
    • 4

    输入输出

    java输入输出方式

    控制流程

    选择 if switch
    循环 for while do-while
    中断 break continue

    for-each 循环

    for(Employee e:staff)e.raise();
    
    • 1

    数组

    一维数组

    int []arr=new int[n];
    
    • 1

    声明、创建。创建后不能修改大小。
    自带arr.length 数组长度
    Arrays.sort(arr[,start,end])排序
    更多函数参见java.util.Arrays

    二维数组
    int [][]arr 支持不规则数组

    高精度BigInteger/BigDecimal

    import java.math.BigInteger/BigDecimal
    BigInteger a=BigInteger.valueOf(100);
    BigInteger b=new BigInteger("12324342");
    BigInteger c=a.add(b);
    c=a.multiply(b);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    class ClassName{
    	private int a;
    	public ClassName(){};//构造方法 没有返回类型 不能直接引用
    	method
    }
    ClassName c1=new ClassName();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    类中的方法可以访问该类中定义的所有成员变量(java特性)
    static:

    • 静态成员变量 一个类共用同一个
    • 静态方法:不必创建对象即可调用,只能访问类中static成员和方法,不能使用this,super,如Math.pow(4,6)

    main方法为主程序入口
    用static修饰,没有创建对象也可使用,String []args由命令行给定
    构造函数:系统有默认构造函数,但如果定义了含参构造函数,就不会提供,需要自行定义无参构造函数。可用this(表隐式参数)区分参数和当前对象成员。在构造方法中调用其他重载构造方法,必须在第一行。
    类中可包含代码块,只要构造对象,即执行代码块;还有静态代码块,不包含在任何方法中,用static{}描述,仅执行一次。

    传参

    调用方法时,基本数据类型只传值,引用数据类型可改引用对象内部的值,不会修改引用
    在这里插入图片描述

    初始化

    • 构造方法(可重载)
    • 声明中赋值(如private int age=13;)
    • 初始化块:构造了一个类,就会执行一次
      静态代码块,构造类的第一次被执行一次,用static{}

    包名小写,建议为反序的Internet域名
    导入的多个包中存在同名类->使用类时需要加包名
    导入静态方法和类变量,使用时无需包名

    jar

    jar cvf 文件名 file1 file2 //压缩
    jar xvf 文件名 //解压
    
    • 1
    • 2

    IDE中可一键压缩

    注释

    一般在要注释代码之前写注释
    标记:
    在这里插入图片描述
    抽取包、公有类和接口、public&protected方法、成员变量的注释,可生成HTML文档,其中的标记也会被抽取形成规范的格式。由于一般发送class文件而非Java源代码,因此该文档可供他人参考使用你的包

    javadoc -d docDirectory nameofPackage
    javadoc -d docDirectory filename
    
    • 1
    • 2

    java命名习惯

    包名:全小写
    类名、接口名:每个单词首字母大写
    变量名、方法名:驼峰命名法
    常量名:全大写

    继承

    extends 父类名
    
    • 1
    • 无extends默认父类为Object,可用Object引用任何类型的对象
    • 超类=基类=父类
      子类=派生类
    • 子类继承父类的所有变量和方法(除了构造方法),但不能访问private
    • 子类可覆盖父类中的方法,参数列表和返回值应完全相同,用super可调用父类中被覆盖的方法
    • 如果被覆盖了,外部通过子类只能访问子类中的方法,不能越过去访问父类(出于安全性的考虑)
    • 子类的构造方法如要调用父类的构造方法,super必须在第一句
    • this()可调用本类中的其他重载构造方法,故不能和super()同时出现在一个构造函数里
    • 只有唯一父类,单继承,但可多层继承
    • 阻止继承:final(类、方法、变量,变量是常量)

    多态

    父类引用变量可以引用子类对象,也就是子类是特殊的父类,赋值、传参时可发生自动转换,但反之必须强制转换,而且要确保转换对象是子类对象
    测试是否为某类或某类子类对象:instanceof

    Employee m=new Manager();
    if(m instanceof Manager)n=(Manager)m;
    
    • 1
    • 2

    声明类型≠实际类型不同,由此出现动态绑定,运行过程中根据引用变量的实际类型调用相应的方法

    抽象类

    abstract

    • 含有抽象方法(没有方法定义的方法)必须声明为抽象类
    • 抽象类可以包含一般方法
    • 抽象类不可生成对象,但可以定义引用变量来引用非抽象子类的对象
    • 抽象类的子类必须覆盖所有的抽象方法才能生成对象,否则仍然是抽象类

    访问控制

    • private 本类可见
    • 缺省 本包可见
    • protected 子类和本包可见(继承访问权限)
    • public 所有类可见

    Object类

    可以引用所有的对象

    public String toString();
    
    • 1

    返回 “类名@内存地址”,一般会覆盖重写,实现为“类[成员变量值1,成员变量值2]"

    public boolean equals(Object obj);
    
    • 1

    比较是否有相同的引用,一般重写。注意传参的类型必须是Object,进来以后在方法内部进行强制转换

    public int hashCode();
    
    • 1

    返回哈希码,默认的为对象的存储地址,如果重写了euqals,则此方法必须重写,需要组合多个哈希值时,可使用Object.hash()对各个参数调用hashCode方法,并组合这些哈希值

    接口 interface

    public interface 接口名 [extends 接口列表]{
    	返回类型 方法名//隐含为public abstract
    	常量类型 常量名;//隐含为public static final
    }
    
    • 1
    • 2
    • 3
    • 4

    用类实现接口:

    class A implements Comparable
    
    • 1
    • 必须实现该接口中定义的抽象方法并定义为public
    • 一个类可实现多个接口
    • 可用instanceof检查某对象是否实现了某个特定接口
    • 方便地实现多重继承

    回调

    public interface Actionlistner{
    	void actionPerformed(ActionEvent event);
    }
    
    • 1
    • 2
    • 3
    public Timer(int delay,ActionListener listener);
    
    ActionListener listener =new Timeprinter();
    Timer t =new Timer(1000,listener);
    t.start();
    
    • 1
    • 2
    • 3
    • 4
    • 5

    对象克隆

    obj.clone()为浅克隆,引用同一个子对象
    重写可实现深克隆,实现标记接口Cloneable,先对父类克隆,然后对子类中的其他成员变量克隆
    不过标准类库里实现克隆的非常少

    内部类

    • 成员内部类
      外部(指它所在的类)不能访问,但可以创造它的对象
    • 方法内部类
      外部方法不能访问,但可以创造它的对象。不能使用修饰符,不能用static
    • 匿名内部类
      可以extends或者implements一个接口(不能同时)

    javax.swing

    容器:JFrame(顶层窗口),JPanel
    基本组件:一大堆
    此处学习了lambda表达式,非常之好,看看这个让你秒懂的Lambda表达式超级详细讲解
    在这里插入图片描述

  • 相关阅读:
    word常用的文件格式有哪些?word格式文件删除了怎么恢复
    【计算机视觉】图像增强——图像的形态学操作
    模拟实现字符串函数(5): strncpy
    计算机网络第四层 运输层
    Leetcode算法题练习(一)
    Linux免密登录——A登录B密钥设置(SSH SCP)
    十万访问量的背后。。。
    RabbitMQ可靠性投递
    一篇文章带你掌握主流基础框架——Spring
    C++:哈希,unordered_map和unordered_set
  • 原文地址:https://blog.csdn.net/sylviiiiiia/article/details/133550346