基本数据类型

java 是强类型语言,在 java 中存储的数据都是有类型的,而且必须在编译时就确定其类型。

基本数据类型变量存储的是数据本身,而引用类型变量存的是数据的空间地址。

基本类型转换

自动类型转换

把一个表数范围小的数值或变量直接赋给另一个表数范围大的变量时,系统将会进行自动类型转换,否则需要强制转换。

强制类型转换

强制类型转换可能存在溢出导致数据精度丢失的情况。

字符串

Java 没有内置的字符串类型,而是提供了一个标准类库 String。

特征:不可变字符串

优点:编译器可以让字符串共享(只有字符串常量是共享的,而 + 或 substring 等操作产生的结果并不是共享的)

运算符

自增自减

int a = 5;
int b = ++a; // a 先自增,再赋值给 b
System.out.println(a); // 6
System.out.println(b); // 6
int a = 5;
int b = a++; // a 先赋值给 b,再自增
System.out.println(a); // 6
System.out.println(b); // 5

条件判断

switch (表达式) {
    case value1:
        statement1;
        break;
    case value2:
        statement2;
        break;
    case valuen:
        statementn;
        break;
    default:
        默认执行的代码;
}

当 switch 后表达式的值和 case 语句后的值相同时,从该位置向下执行,直到遇到 break 语句或者 switch 语句块结束;如果没有匹配的 case 语句则执行 default 块的代码。

  • case 后面的值可以是常量数值,也可以是一个常量表达式,但不能是变量或带有变量的表达式

  • 可以把功能相同的 case 语句合并起来

  • default 块可以出现在任意位置,也可以省略

循环

While

while (condition) {
    statement;
}

do-While

do {
    statement;
} while (condition);

for

for (循环变量初始化; 循环条件; 循环变量变化) {
    statement;
}

循环跳转

  • break

  • continue

数组

数组是用来存储固定大小的同类型元素。一旦数组初始化完成,数组在内存中所占的空间将被固定下来,因此数组的长度将不可以改变,即使某个数组的元素被清空,但是它所占的空间依然保留。

数组本身也是一种引用类型,既可以存储基本数据类型,也可以存储引用类型,只要存储的数组元素具有相同的类型即可。

动态初始化

执行动态初始化时,系统会根据声明的数组类型自动为数组元素分配初始值。如果是引用类型,则数组元素的初始值为 null。

int[] scores;
scores = new int[5]; // 声明一个长度为5的整型数组

// 上面两步可以合为一步
int[] scores = new int[5]; 

静态初始化

显示指定每个元素的初始值

int[] scores;
scores = new int[] {1,2,3,4};

// 上面两步可以合为一步
int[] scores = {1,2,3,4};// 方式二

遍历数组

  • for 循环遍历数组

  • foreach 遍历数组:foreach 不是 java 中的关键字,是 for 语句的特殊简化版。在遍历数组、集合时更方便

int[] scores = {1,2,3,4};

for (int score : scores) {
    System.out.println(score);
}

数组的本质

将数组看成两个部分,一个部分是数组引用,也就是在代码中定义的数组引用变量;另一部分是实际的数组对象,这部分是在堆内存中运行的,通常无法直接访问它,只能通过引用变量来访问。

二维数组

二维数组本质上还是一维数组,只是其数组元素也是引用,数组元素里保存的引用指向一维数组。

String [][] str1 = {new String[3], new String[]{"hello"}};

上面代码的示意图:

最新文章

  1. 【TIP】已经上架的app在AppStore上搜不到的解决办法
  2. Container View 使用小技巧
  3. 理解Docker容器的进程管理
  4. 关于SQL Server 2008添加用户映射问题 解决办法
  5. Android Studio 插件的使用
  6. HDU 1018 Big Number (数学题)
  7. 翻译「C++ Rvalue References Explained」C++右值引用详解 Part8:Perfect Forwarding(完美转发):解决方案
  8. 创建母版页导致js出现“ 'document.getElementById(...)' 为空或不是对象”错误
  9. javascripct字符串
  10. mysql 刘道成视频教程 第3课
  11. cp | mv | rm
  12. Nginx + ngx_lua安装测试【CentOs下】
  13. java线程间通信:一个小Demo完全搞懂
  14. python算法运算
  15. 从零开始学习前端开发 — 18、BFC
  16. C语言--第二周作业
  17. springboot + redis(单机版)
  18. release 步骤
  19. OpenGIS 介绍(转)
  20. Python实现图片压缩

热门文章

  1. Python-demo(video)
  2. Sqoop数据迁移工具的使用
  3. d3.js制作蜂巢图表带动画效果
  4. unity编辑器扩展_07(创建对话框,检测按钮的点击,点击按钮后提示信息,保存设置的数据,显示点击按钮后的处理的进度条信息)
  5. redis之mq实现发布订阅模式
  6. Linux网络配置(10)
  7. python语言输入
  8. GNU大型项目构建和覆盖率生成(第一篇)
  9. LVM的创建及管理
  10. mysql 查询参数尾部有空格时被忽略