JAVA基础(一)——基础类型与面向对象

1 数据类型

  • 基本类型

    byte short int long float double boolean char
    n 8 16 32 64 32 64 true/false 16
    字节数 1 2 4 8 4 8 2
    默认值 0 0 0 0L 0.0f 0.0d false 0

    范围:[-2n-1,2n-1-1]

    • byte到double都是有符号的表示数值类型
    • byte short float 在大型数组中节省空间
    • float double 浮点数不能精确表示
  • 引用类型

    • 指向一个对象,默认值为null

      Site site = new Site("Runoob")

  • 类型转换

    • 自动转换:从低级到高级

      • 从低到高为byte,short,char—> int —> long—> float —> double
    • 强制转换:从高级到低级
      • 转换过程可能溢出或损失精度,浮点数到整数的转换是舍弃小数,而不是四舍五入
      • 写法:(int)23.7
  • 类表示

    • Character类是char的类,方便要使用char对象时使用

      • Character ch = new Character('a');
      • Character ch = ‘a’;
      • char c = ch;
    • Number类的各种子类Integer、Long、Byte、Double、Float、Short
      • Integer b = 1;
      • Integer c = new Integer(1);
      • Integer.parseInt Double.parseDouble Long.parseLong String.valueOf

2 常量

  • 常量不能修改,一般大写,用final修饰
  • 数值前缀:0表示8进制,0x表示16进制

3 转义字符

\n \t \b \0 \r \f \" \' \\ \s
换行 制表符 退格 回车 换页 双引号 单引号 反斜杠 字符串

4 运算符

算术 + - * /(取整) % ++ --
关系 == != >= <=
& | ~(非,波浪线) ^(异或) <<(左移) >>(右移) >>> (无符号右移)
逻辑 && || !(非) ^(异或)
赋值 += -= *= /=
  • 区别

    • &与|左右两边的式子一定会执行(比较笨)
    • &&与||只要左边能得到结果,右边就不会执行(比较聪明)
  • 注意

    • 2b不代表2*b
    • 3<<2表示3左移2位
    • 异或相同为0,不同为1
  • 其它

    • 条件运算符

      • b= (a==1) ? 1 : 0
    • instanceof 运算符,检查对象是否是特定类型

      • String name = "James";
        boolean result = name instanceof String; Vehicle a = new Car();
        boolean result = a instanceof Car;

5 语法

if(){}
else if(){}
else{} switch(){
case :
break;
default :
} while(){} //break,continue
do{}while() for(){} //增强for for(:){}

6 enum枚举变量

 //枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的 bug。
public enum Result {
X_WIN,O_WIN,DRAW,GAMING
}
Result result = Result.DRAW; class FreshJuice {
enum FreshJuiceSize{ SMALL, MEDIUM , LARGE }
FreshJuiceSize size;
}s
FreshJuice juice = new FreshJuice();
juice.size = FreshJuice.size.MEDIUM ;
//Enum.IsDefined()方法,返回枚举中是否存在该值

7 面向对象

  • 一个源文件中只能有一个public类,可以有多个非public类

  • 修饰符

    public private(不能修饰类) protected(不能修饰类)
    对所有包所有类可见 只在同一类可见 对同一包的类和基类的所有子类可见
    • protected

      • 子类和基类在同一包:总之对同一包可见
      • 子类和基类不在同一包:子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法。
    • 方法继承规则:
      • 父类中声明为 public 的方法在子类中也必须为 public。
      • 父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private。
      • 父类中声明为 private 的方法,不能够被继承
  • static修饰符

    • 独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝

    • 静态变量不会随对象销毁

        public class Variable{
      static int allClicks=0;
      String str="hello world"; // 成员变量:对象被销毁的时候销毁 public void method(){
      int i =0; // 局部变量:类的方法中的变量,当它们执行完成后,变量将会被销毁。
      }
      }
    • 静态方法不能使用类的非静态变量

    • 访问直接使用 classname.variablename 和 classname.methodname

  • final修饰符(用来防止被修改)

    • 变量:不可被修改
    • 方法:不可被修改,子类可继承,但不可修改
    • 类: 不可被修改
  • abstract修饰符

    • 抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。

    • 抽象类可以包含抽象方法和非抽象方法。

      • 只要类包含抽象方法,该类必须声明为抽象类。
      • 抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供。
      • 抽象方法的声明以分号结尾,例如:public abstract sample();。
    • 继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。

      abstract class Caravan{
      private double price;
      private String model;
      private String year;
      public abstract void goFast(); //抽象方法
      public abstract void changeColor();
      }
  • synchronized修饰符

    • 方法同一时间只能被一个线程访问

      public synchronized void showDetails(){}
    • volatile修饰符

      • volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。
      • 而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。
      • 这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
  • 多态继承 wait………………

JAVA基础(一)—— 基础类型与面向对象的更多相关文章

  1. 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错

    原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...

  2. Java 基础复习 基础数据类型与包装器类型

    Java 基础 基础数据类型与包装器类型 基础数据类型 java 中包含哪些基础数据类型,默认值分别是多少? 基础数据类型 byte short int long double float char ...

  3. Java基础之枚举类型Enum的使用

    Java基础之枚举类型Enum的使用 定义 public enum AccruedCleanEnum { SPREAD("1","发票"),OTHER(&quo ...

  4. 基础篇:深入解析JAVA泛型和Type类型体系

    目录 1 JAVA的Type类型体系 2 泛型的概念 3 泛型类和泛型方法的示例 4 类型擦除 5 参数化类型ParameterizedType 6 泛型的继承 7 泛型变量TypeVariable ...

  5. java基础04-数据类型扩展及面试题

    java基础04-数据类型扩展及面试题讲解 public class demo02 { public static void main(String[] args){ // 一.整数拓展: 进制 二进 ...

  6. Java基础01 ------ 从HelloWorld到面向对象

    Java是完全面向对象的语言.Java通过虚拟机的运行机制,实现“跨平台”的理念.我在这里想要呈现一个适合初学者的教程,希望对大家有用. "Hello World!" 先来看一个H ...

  7. Java基础01 从HelloWorld到面向对象(转载)

    Java是完全面向对象的语言.Java通过虚拟机的运行机制,实现“跨平台”的理念. "Hello World!" public class HelloWorld{    publi ...

  8. java字符串以及字符类型基础

    介绍一下java字符集和字符的编码方式, 首先要区分一下字符集和字符编码.所谓的字符集 类似于unicode,GB2312,GBK,ASCII等等.因为一开始只有26个英文字母需要 编一下号.所有用下 ...

  9. Java基础_枚举类型

    作用:让数据更简洁,更易读,增加代码可读性. 为了用1,2,3,4,5分别表示老师,学生,小组,班主任,后勤,可以直接设置一个变量,让roleType = 1,但这样写代码可读性差. 也可以定义一个成 ...

随机推荐

  1. 二进制方法-部署k8s集群部署1.18版本

    二进制方法-部署k8s集群部署1.18版本 1. 前置知识点 1.1 生产环境可部署kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式 kuberadm Kubea ...

  2. 2019 徐州网络赛 M Longest subsequence t

    对于答案来说,一定是 前 i-1 个字符和 t的前 i 个一样,然后第 i 个字符比 t的 大 \(i\in [1,m]\) 前缀为t,然后长度比t长 对于第一种情况,枚举这个 i ,然后找最小的 p ...

  3. 用Python修改本机适配器信息

    主要参考来自[用Python干实事(一)自动修改Windows的IP.网关和DNS设置]. 使用_winreg模块来操作注册表实现相关信息的修改,它是python的内置模块.也可以通过Win32 Ex ...

  4. 【poj 2752】Seek the Name, Seek the Fame(字符串--KMP)

    题意:给出一个字符串str,求出str中存在多少子串,使得这些子串既是str的前缀,又是str的后缀.从小到大依次输出这些子串的长度. 解法:利用KMP中next[ ]数组的性质,依次找到前缀.后缀匹 ...

  5. Bubble Cup 13 - Finals [Online Mirror, unrated, Div. 1] K. Lonely Numbers (数学)

    题意:定义两个数\(a,b\)是朋友,如果:\(gcd(a,b)\),\(\frac{a}{gcd(a,b)}\),\(\frac{b}{gcd(a,b)}\)能构成三角形,现在给你一个正整数\(n\ ...

  6. 牛客53680 「金」点石成金 (dfs)

    题意:给你\(n\)组数,每组4个正整数\(a,b,c,d\),每组数有两个选择: ​ 1.增加\(a\)个财富,消耗\(b\)点魔法. ​ 2.回复\(c\)点魔法,减少\(a\)个财富. 求最后财 ...

  7. 找工作面试题记录与参考资料(Golang/C++/计算机网络/操作系统/算法等)

    记录下去年(2020年)找工作的面试题及参考资料. C++ 智能指针的实现原理 多态的实现原理[2] C++11/14/17新特性[3] 手写memcpy和memmove[4] 介绍下boost库 计 ...

  8. Zabbix 监控项更多用法

    监控服务端口状态 配置 Zabbix 提供的检测器 配置自定义值映射 查看监控项数据状态 触发器配置 自定义监控项 TCP 11 种状态 TCP 11 种状态 LISTEN - 侦听来自远方TCP端口 ...

  9. kubernetes实战-配置中心(一)configmap资源

    在我们的环境中测试使用configmap资源,需要先对我们的环境进行一些准备,首先将dubbo服务调整为0个pod ,然后把zookeeper进行拆分: 拆分zk环境,模拟测试环境跟生产环境: 停止z ...

  10. C# 类 (12) - Partial

    Partial 前面说了,同一个namespace 里 class 名字是不能重的,除非是在不同的namespace里,下面开始打脸在同一个namespace里,加上partial 关键字,可以写同样 ...