基本数据类型

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"}};

上面代码的示意图:

Java 基础篇之编程基础的更多相关文章

  1. [Java入门笔记] 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

  2. iOS开发网络篇—网络编程基础

    iOS开发网络篇—网络编程基础 一.为什么要学习网络编程 1.简单说明 在移动互联网时代,移动应用的特征有: (1)几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图 (2)只有通过 ...

  3. iOS开发网络篇—网络编程基础(一)

    一.为什么要学习网络编程 1.简单说明 在移动互联网时代,移动应用的特征有: (1)几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图 (2)只有通过网络跟外界进行数据交互.数据更新 ...

  4. 【matlab 基础篇 02】基础知识一键扫盲,看完即可无障碍编程(超详细+图文并茂)

    博主快速入门matlab,系统地整理一遍,如何你和我一样是一个新手,那么此文很适合你: 本人能力有限,文中难免有错误和纰漏之处,请大佬们不吝赐教 创作不易,如果本文帮到了您: 请帮忙点个赞

  5. Go语言基础之19--web编程基础

    一.web编程基础 1.1 web工作方式 1.2 HTTP协议详解 a.http 请求包体 GET /domains/example/ HTTP/1.1 //请求行: 请求方法 请求URI HTTP ...

  6. 与你一起学习MS Project——基础篇:Project基础应用

    为了更清晰容易地熟悉掌握Project的基础应用,我们在基础篇中一起来学习掌握在Project中如何做进度计划.资源计划.成本计划以及跟踪项目的执行情况并生成所需的项目报表. 一.进度计划 这里,首先 ...

  7. 3分钟看完Java 8——史上最强Java 8新特性总结之第一篇 函数式编程基础

    目录 · 行为参数化 · Lambda表达式 · 概况 · 函数式接口 · 类型推断 · 使用外层变量 · 方法引用 · 复合Lambda表达式 行为参数化 1. 理解函数式编程要先理解行为参数化. ...

  8. java基础篇---网络编程(TCP程序设计)

    TCP程序设计 在Java中使用Socket(即套接字)完成TCP程序的开发,使用此类可以方便的建立可靠地,双向的,持续的,点对点的通讯连接. 在Socket的程序开发中,服务器端使用serverSo ...

  9. java基础篇---网络编程(IP与URL)

    一:IP与InetAddress 在Java中支持网络通讯程序的开发,主要提供了两种通讯协议:TCP协议,UDP协议 可靠地连接传输,使用三方握手的方式完成通讯 不可靠的连接传输,传输的时候接受方不一 ...

随机推荐

  1. Linux 用户和组 权限管理 常用命令与参数

    ========================================================================== 1.基本概念: 所有者 : 一般为文件的创建者,谁 ...

  2. JavaScript 数据结构与算法之美 - 冒泡排序、插入排序、选择排序

    1. 前言 算法为王. 想学好前端,先练好内功,只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScript ,旨在入门数据结构与算 ...

  3. ThreadLocal可以解决并发问题吗?

    前言 到底什么是线程的不安全?为什么会存在线程的不安全?线程的不安全其实就是多个线程并发的去操作同一共享变量没用做同步所产生意料之外的结果.那是如何体现出来的呢?我们看下面的一个非常经典的例子:两个操 ...

  4. 手把手教你用深度学习做物体检测(五):YOLOv1介绍

    "之前写物体检测系列文章的时候说过,关于YOLO算法,会在后续的文章中介绍,然而,由于YOLO历经3个版本,其论文也有3篇,想全面的讲述清楚还是太难了,本周终于能够抽出时间写一些YOLO算法 ...

  5. BZOJ1878[SDOI2009]HH的项链+莫队算法模板

    题意:多次询问,求在一个区间中,有多少种珠子: 思路:莫队算法模板题目: 参考:https://www.cnblogs.com/RabbitHu/p/MoDuiTutorial.html #inclu ...

  6. 【Leetcode】【简单】【66. 加一】【JavaScript】

    题目描述 66. 加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外,这个整数不会以零 ...

  7. 深入Go的错误处理机制使用

    开篇词 程序运行过程中不可避免的发生各种错误,要想让自己的程序保持较高的健壮性,那么异常,错误处理是需要考虑周全的,每个编程语言提供了一套自己的异常错误处理机制,在Go中,你知道了吗?接下来我们一起看 ...

  8. .NetCore技术研究-ConfigurationManager在单元测试下的坑

    最近在将原有代码迁移.NET Core, 代码的迁移基本很快,当然也遇到了不少坑,重构了不少,后续逐步总结分享给大家.今天总结分享一下ConfigurationManager遇到的一个问题. 先说一下 ...

  9. Storm 系列(四)—— Storm 集群环境搭建

    一.集群规划 这里搭建一个 3 节点的 Storm 集群:三台主机上均部署 Supervisor 和 LogViewer 服务.同时为了保证高可用,除了在 hadoop001 上部署主 Nimbus ...

  10. 如何完美激活pycharm2019.2.2

    本号持续关注pycharm的更新,这不本月11号迎来新版本,为防走丢,请关注公众号,让我们携手并行!有道是"予人玫瑰手留余香",分享的确是件令人愉快的事,这也是我创建公众号的初心. ...