学习Aandroid开发第一天-java基础(part 1)

正式开始安卓开发学习的第一天,原本只是按照以往的方式将一些认为重要的知识点以博客的形式记录下来,后来感觉这样做仅仅是做了个笔记而已,感觉对于学习没有特别大的作用,所以决定还是将自己看过的知识重新整理一遍,将其按照比较容易理解的方式记录。

基本目录

  • java数据类型
    • 基本数据类型
    • 引用数据类型
  • java引用类型
  • java堆栈相关
    • Java变量
      • 局部变量
      • 成员变量
    • 数据存储类型
  • Java进制转换
  • java修饰符
  • java运算符
    • 算数运算符
    • 关系运算符
    • 逻辑运算符
    • 位运算符
  • java流程控制语句

java数据类型

Java数据类型:一般的将Java主要分为两大数据类型,包括基本数据类型、引用数据类型。

基本数据类型

Java中存在八大基本数据类型,比如byte、int、char、long、boolean、float、double、short,这些数据类型均存在于栈中,当使用这些基本数据类型时操作较快。

引用数据类型

包括数组、接口、类等,使用引用数据类型时对象存于堆中即new Student()==》存于堆,但是对象的值存于栈中。即通过new产生的对象存于堆,但其值存于栈。

java引用类型

上文谈到数据类型,由于在之前的面试题中看到关于Java引用类型的题目,当时我对此知识不甚了解,在此对其进行简单的介绍。
  • 强引用:格式类似String str = new String(“abc”),我们通常看到了对象的实例化就是一种强引用。如果不手动将对象的引用设置为null,则该对象将不会被gc回收,即使内存不足也不会回收。
  • 软引用:通常是描述非必需但是有作用的对象,格式类似SoftReference cacheRef = new SoftReference<>(cacheData),当内存不够时,将会被回收。
  • 弱引用:描述非必须对象,类似于WeakReference cacheRef = new WeakReference<>(cacheData),当gc开始回收时,就会将其对象进行回收。
  • 虚引用:虚拟的引用,对于对象的生命周期毫无影响,主要作用是在对象被收集器回收时收到一个系统通知,比如:jdk中直接内存的回收就用到虚引用。

java堆栈相关

Java堆栈主要涉及对象的引用、局部变量、成员变量等之间的生命周期,以及数据的存储。

Java变量

局部变量

从字面意思看,局部即某个部分之中定义的变量,即方法、代码块中定义的变量。

成员变量

通常所说的成员比如家庭成员,将家庭看作一个类,可以理解为在类中、方法之外定义的变量

数据存储类型

提起Java中的堆栈就会自然的想到不就是数据的存储嘛,使其Java中的数据存储并不仅限于堆、栈两种形式,还有类似常量池、寄存器、静态域等存储形式。

  • 寄存器:位于处理器内部,由编译器根据需要来分配的,无法通过代码控制寄存器
  • 堆:一般是存放new出来的对象
  • 栈:主要存放基本数据类型、对象的引用
  • 常量池:即存放常量的pool,主要包括字符串常量、static final常量
  • 静态域:存放static修饰的成员

Java进制转换

Java中对于数据的进制主要包括二进制、十进制、八进制、十六进制。

  • 二进制:0101类似的格式
  • 八进制:必须以0开头
  • 十六进制:以0x开头
  • 二进制转为八进制、十六进制:取二进制的三位为一组/四位为一组,分组计算。

java修饰符

修饰符 适用范围
public 所有的对象均可调用
protected 当前类,同一个包下的对象,同一个包下的子类
default 当前类的对象,同一个包下的对象
private 当前类的对象

java运算符

算数运算符

+ - * / % ++ –

关系运算符

== != > >= < <=

逻辑运算符

&& || ! ^ & |

位运算符

& | ~ ^ >> << >>>
5 << 2:表示向左移动两位(从前一位数字开始计算)
无符号右移( >>> ):先取得二进制数,再取反值,再加一

java流程控制语句

顺序、条件(if)、选择(switch case)、循环(for/while)

你可能感兴趣的:(java)