<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.0">Jekyll</generator><link href="https://www.zhouxinye.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.zhouxinye.com/" rel="alternate" type="text/html" /><updated>2021-03-31T22:15:26+08:00</updated><id>https://www.zhouxinye.com/feed.xml</id><title type="html">Satoshi</title><subtitle>Satoshi的个人博客</subtitle><author><name>Satoshi</name></author><entry><title type="html">通过Spring和JDBC征服数据库</title><link href="https://www.zhouxinye.com/2019/07/13/spring-shizhan-10/" rel="alternate" type="text/html" title="通过Spring和JDBC征服数据库" /><published>2019-07-13T00:00:00+08:00</published><updated>2019-07-13T00:00:00+08:00</updated><id>https://www.zhouxinye.com/2019/07/13/spring-shizhan-10</id><content type="html" xml:base="https://www.zhouxinye.com/2019/07/13/spring-shizhan-10/">&lt;p&gt;&lt;strong&gt;目录&lt;/strong&gt;&lt;/p&gt;

&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#定义-spring-对数据库访问的支持&quot; id=&quot;markdown-toc-定义-spring-对数据库访问的支持&quot;&gt;定义 Spring 对数据库访问的支持&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#配置数据库资源&quot; id=&quot;markdown-toc-配置数据库资源&quot;&gt;配置数据库资源&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#使用-spring-的-jdbc-模板&quot; id=&quot;markdown-toc-使用-spring-的-jdbc-模板&quot;&gt;使用 Spring 的 JDBC 模板&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;定义-spring-对数据库访问的支持&quot;&gt;定义 Spring 对数据库访问的支持&lt;/h2&gt;
&lt;p&gt;&lt;br /&gt;
Spring 的数据访问异常&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;h2 id=&quot;配置数据库资源&quot;&gt;配置数据库资源&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;使用JNDI数据源&lt;/li&gt;
  &lt;li&gt;使用数据源连接池&lt;/li&gt;
  &lt;li&gt;基于 JDBC 驱动的数据源&lt;/li&gt;
  &lt;li&gt;使用嵌入式的数据源&lt;/li&gt;
  &lt;li&gt;使用 profile 选择数据源&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;使用-spring-的-jdbc-模板&quot;&gt;使用 Spring 的 JDBC 模板&lt;/h2&gt;
&lt;p&gt;&lt;br /&gt;
简化了 JDBC 代码&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;JdbcTemplate&lt;/li&gt;
  &lt;li&gt;NamedParameterJdbcTemplate&lt;/li&gt;
  &lt;li&gt;SimpleJdbcTemplate&lt;/li&gt;
&lt;/ol&gt;</content><author><name>Satoshi</name></author><category term="Spring" /><summary type="html">目录</summary></entry><entry><title type="html">Class And Object</title><link href="https://www.zhouxinye.com/2019/04/25/java-learn-javaoo/" rel="alternate" type="text/html" title="Class And Object" /><published>2019-04-25T00:00:00+08:00</published><updated>2019-04-25T00:00:00+08:00</updated><id>https://www.zhouxinye.com/2019/04/25/java-learn-javaoo</id><content type="html" xml:base="https://www.zhouxinye.com/2019/04/25/java-learn-javaoo/">&lt;p&gt;&lt;strong&gt;目录&lt;/strong&gt;&lt;/p&gt;

&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#类&quot; id=&quot;markdown-toc-类&quot;&gt;类&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#1创建类&quot; id=&quot;markdown-toc-1创建类&quot;&gt;1.创建类&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#2方法返回值&quot; id=&quot;markdown-toc-2方法返回值&quot;&gt;2.方法返回值&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#3关键字-this&quot; id=&quot;markdown-toc-3关键字-this&quot;&gt;3关键字 &lt;strong&gt;this&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#对象&quot; id=&quot;markdown-toc-对象&quot;&gt;对象&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#1-创建对象&quot; id=&quot;markdown-toc-1-创建对象&quot;&gt;1. 创建对象&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#2-使用对象&quot; id=&quot;markdown-toc-2-使用对象&quot;&gt;2. 使用对象&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;类&quot;&gt;类&lt;/h2&gt;

&lt;h3 id=&quot;1创建类&quot;&gt;1.创建类&lt;/h3&gt;
&lt;p&gt;下面定义一个简单类:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;class MyClass {
    // field, constructor, and
    // method declarations
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;
声明一个类需要注意以下几点&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;需要修饰符，像public这样的&lt;/li&gt;
  &lt;li&gt;类名首字母要大写&lt;/li&gt;
  &lt;li&gt;继承父类需要使用关键字 &lt;strong&gt;&lt;em&gt;extends&lt;/em&gt;&lt;/strong&gt; ，一个子类只能继承一个父类&lt;/li&gt;
  &lt;li&gt;实现一个类需要使用关键字 &lt;strong&gt;&lt;em&gt;implements&lt;/em&gt;&lt;/strong&gt; ，一个类可以实现多个类，类名之间用逗号隔开&lt;/li&gt;
  &lt;li&gt;类的主体被大括号包围&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;
1.1 声明成员变量&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;字段的声明由三部分组成&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;修饰符：比如public&lt;/li&gt;
  &lt;li&gt;字段类型&lt;/li&gt;
  &lt;li&gt;字段名称&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1.1.1 修饰符访问权限&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;public 所有类都可以访问&lt;/li&gt;
  &lt;li&gt;private 只有类自己可以访问&lt;/li&gt;
  &lt;li&gt;default 类自己和同包下的其他类&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1.1.2 类型&lt;br /&gt;
成员变量必须有一个类型，可以使基础类型，也可以是引用对象（数组，对象等）&lt;br /&gt;
&lt;br /&gt;
1.1.3 变量名&lt;br /&gt;
遵循变量命名规则，除此之外还要遵循以下规则：&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;类名首字母大写&lt;/li&gt;
  &lt;li&gt;方法名第一个词为动词&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1.2 定义方法&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;public double calculateAnswer(double wingSpan, int numberOfEngines,
                              double length, double grossTons) {
    //do the calculation here
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;上面代码定义一个简单的方法，一个方法拥有以下组件：&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;修饰符，private等&lt;/li&gt;
  &lt;li&gt;返回类型，方法返回值的类型，如果没有可以使用void&lt;/li&gt;
  &lt;li&gt;方法名，字段名的命名规则也适用方法名的命名&lt;/li&gt;
  &lt;li&gt;参数列表，如果没有则为空&lt;/li&gt;
  &lt;li&gt;异常类型列表，可以不加&lt;/li&gt;
  &lt;li&gt;方法体&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;方法声明需要方法名和参数列表：&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;demo(parameter1,parameter2);
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;1.2.1 方法名命名建议使用动词或者第一个单词为动词之后可以使用其他类型单词  &lt;br /&gt;&lt;/p&gt;

&lt;p&gt;1.2.3 方法重载
方法重载是方法名相同，但是参数列表不一样&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;1.3 构造器
构造器的定义和定义一个方法类似，但是没有返回类型，且名称和类名一样&lt;br /&gt;
构造器可以重载&lt;br /&gt;
如果一个类无法调用另一个类的构造器，则就无法创建该方法对象&lt;/p&gt;

&lt;p&gt;1.4 传递信息给方法和构造器&lt;/p&gt;

&lt;p&gt;1.4.1 参数类型&lt;br /&gt;
基本类型和引用类型&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;1.4.2 可变参数&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;public Polygon polygonFrom(Point... corners) {
    int numberOfSides = corners.length;
    double squareOfSide1, lengthOfSide1;
    squareOfSide1 = (corners[1].x - corners[0].x)
                     * (corners[1].x - corners[0].x)
                     + (corners[1].y - corners[0].y)
                     * (corners[1].y - corners[0].y);
    lengthOfSide1 = Math.sqrt(squareOfSide1);

    // more method body code follows that creates and returns a
    // polygon connecting the Points
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;上述Point为一个有x和y字段的类&lt;br /&gt;
在方法内，将可变参数当成一个数组进行处理&lt;br /&gt;
我们平时使用的printf就是一个使用可变参数的方法&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;1.4.3 参数名&lt;br /&gt;
1.参数名在方法类必须唯一&lt;br /&gt;
2.参数名可以类的字段名称相同，在方法使用相同名称的类的字段需要加上 &lt;strong&gt;this&lt;/strong&gt; 关键字&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;1.4.4 传递的参数类型&lt;br /&gt;
可以是基础类型和引用类型，但是需要注意&lt;br /&gt;
使用基本类型，在方法结束返回后，对于参数的修改将消失&lt;br /&gt;
使用引用类型，可以保留对参数的修改  &lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;2方法返回值&quot;&gt;2.方法返回值&lt;/h3&gt;
&lt;p&gt;当出现以下情况时，调用方法时会返回：&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;执行完方法所有语句&lt;/li&gt;
  &lt;li&gt;遇到关键字 &lt;strong&gt;return&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;抛出异常&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;方法的声明类型如果不是 &lt;strong&gt;void&lt;/strong&gt; 则需要有返回语句，返回值的类型必须与声明类型一致&lt;br /&gt;
声明类型为 &lt;strong&gt;void&lt;/strong&gt; 的方法需要 &lt;strong&gt;return&lt;/strong&gt; 语句，则可以这样使用&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;public void methodDemo(){
  //Statement
  return;
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;3关键字-this&quot;&gt;3关键字 &lt;strong&gt;this&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;使用关键字 &lt;strong&gt;this&lt;/strong&gt; 表示调用当前类的字段或方法&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;public class Point {
    public int x = 0;
    public int y = 0;

    //constructor
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;使用关键字 &lt;strong&gt;this&lt;/strong&gt; 还可以代指调用构造参数，但是只能在构造函数第一行调用其他构造函数&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;public class Rectangle {
    private int x, y;
    private int width, height;

    public Rectangle() {
        this(0, 0, 1, 1);
    }
    public Rectangle(int width, int height) {
        this(0, 0, width, height);
    }
    public Rectangle(int x, int y, int width, int height) {
        this.x = x;
        this.y = y;
        this.width = width;
        this.height = height;
    }
    ...
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;对象&quot;&gt;对象&lt;/h2&gt;
&lt;h3 id=&quot;1-创建对象&quot;&gt;1. 创建对象&lt;/h3&gt;
&lt;p&gt;创建一个对象有三个部分组成&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;声明&lt;/li&gt;
  &lt;li&gt;实例化&lt;/li&gt;
  &lt;li&gt;初始化  &lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1.1 声明对象&lt;br /&gt;
声明对象只需对象类型(Object)和变量名称(objName)&lt;br /&gt;
声明一个类不等于创建一个对象，在创建之前无法使用该变量&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Object objName
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;1.2 实例化&lt;br /&gt;
使用关键字 &lt;strong&gt;new&lt;/strong&gt; 来实例化一个类，为新对象分配内存并返回该对象的引用&lt;/p&gt;

&lt;p&gt;1.3 初始化一个对象&lt;br /&gt;
每个类至少有一个构造函数，如果在创建类时没有创建构造函数，在编译时，java编译器会默认提供一个无参构造函数&lt;br /&gt;
初始化一个对象需要使用关键字 &lt;strong&gt;new&lt;/strong&gt; 根据参数类型和数量来调用类的构造函数&lt;/p&gt;

&lt;h3 id=&quot;2-使用对象&quot;&gt;2. 使用对象&lt;/h3&gt;
&lt;p&gt;创建对象后，我们可以：&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;引用对象的字段&lt;/li&gt;
  &lt;li&gt;调用对象的方法&lt;/li&gt;
&lt;/ul&gt;</content><author><name>Satoshi</name></author><category term="Java" /><summary type="html">目录</summary></entry><entry><title type="html">Java Language Basics</title><link href="https://www.zhouxinye.com/2019/04/23/java-learn-nutsandbolts/" rel="alternate" type="text/html" title="Java Language Basics" /><published>2019-04-23T00:00:00+08:00</published><updated>2019-04-23T00:00:00+08:00</updated><id>https://www.zhouxinye.com/2019/04/23/java-learn-nutsandbolts</id><content type="html" xml:base="https://www.zhouxinye.com/2019/04/23/java-learn-nutsandbolts/">&lt;p&gt;&lt;strong&gt;目录&lt;/strong&gt;&lt;/p&gt;

&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#变量&quot; id=&quot;markdown-toc-变量&quot;&gt;变量&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#变量种类&quot; id=&quot;markdown-toc-变量种类&quot;&gt;变量种类&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#命名规则&quot; id=&quot;markdown-toc-命名规则&quot;&gt;命名规则&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#基本数据类型&quot; id=&quot;markdown-toc-基本数据类型&quot;&gt;基本数据类型&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#数组&quot; id=&quot;markdown-toc-数组&quot;&gt;数组&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#运算符&quot; id=&quot;markdown-toc-运算符&quot;&gt;运算符&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#赋值算术一元运算&quot; id=&quot;markdown-toc-赋值算术一元运算&quot;&gt;赋值、算术、一元运算&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#一元运算符&quot; id=&quot;markdown-toc-一元运算符&quot;&gt;一元运算符&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#关系运算符&quot; id=&quot;markdown-toc-关系运算符&quot;&gt;关系运算符&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#条件运算符&quot; id=&quot;markdown-toc-条件运算符&quot;&gt;条件运算符&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#类型比较运算符-instanceof&quot; id=&quot;markdown-toc-类型比较运算符-instanceof&quot;&gt;类型比较运算符 instanceof&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#位操作符和位移操作符&quot; id=&quot;markdown-toc-位操作符和位移操作符&quot;&gt;位操作符和位移操作符&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#控制语句&quot; id=&quot;markdown-toc-控制语句&quot;&gt;控制语句&lt;/a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#if-then-else-和-if-then-语句&quot; id=&quot;markdown-toc-if-then-else-和-if-then-语句&quot;&gt;if-then-else 和 if-then 语句&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#switch&quot; id=&quot;markdown-toc-switch&quot;&gt;switch&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#while-和-do-while&quot; id=&quot;markdown-toc-while-和-do-while&quot;&gt;while 和 do-while&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#for语句&quot; id=&quot;markdown-toc-for语句&quot;&gt;for语句&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#分支语句break和continue&quot; id=&quot;markdown-toc-分支语句break和continue&quot;&gt;分支语句break和continue&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#return&quot; id=&quot;markdown-toc-return&quot;&gt;return&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;变量&quot;&gt;变量&lt;/h2&gt;

&lt;h3 id=&quot;变量种类&quot;&gt;变量种类&lt;/h3&gt;
&lt;ol&gt;
  &lt;li&gt;实例变量：独立方法之外的非static变量&lt;/li&gt;
  &lt;li&gt;类变量：独立方法之外的static变量&lt;/li&gt;
  &lt;li&gt;局部变量：方法中的变量&lt;/li&gt;
  &lt;li&gt;参数：方法后面括号类的参数&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;命名规则&quot;&gt;命名规则&lt;/h3&gt;
&lt;ol&gt;
  &lt;li&gt;变量名区别大小写，以字母、$、_ 开头，后面为字母，数字，$和_。人们习惯以字母开头命名变量&lt;/li&gt;
  &lt;li&gt;变量名不能包含关键字和保留字段&lt;/li&gt;
  &lt;li&gt;建议命名遵循驼峰式命名规则，一个单词时变量全部小写，两个单词以上组成，第二个开始首字母大写；常量建议全部大写，每个单词以下划线隔开&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;基本数据类型&quot;&gt;基本数据类型&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Java共有八中基础数据类型&lt;/strong&gt;&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;类型&lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;字节&lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;取值范围&lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;默认值&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;byte&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;8&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;-2^7 ~ 2^7-1&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;short&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;16&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;-2^15 ~ 2^15-1&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;int&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;32&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;-2^31 ~ 2^31-1&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;long&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;64&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;-2^63 ~ 2^63-1&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;0L&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;float&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;32&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;/&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;0.0f&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;double&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;64&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;/&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;0.0d&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;char&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;16&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;\u0000 ~ \uffff&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;‘\u0000’&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;boolean&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;/&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;true/false&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;false&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Java SE 7及以上的版本可以在数字之间加上下划线，但需要遵守以下规则&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;在数字的开头和结尾不能使用&lt;/li&gt;
  &lt;li&gt;于浮点类型的小数点附件&lt;/li&gt;
  &lt;li&gt;在F、L等尾缀之前&lt;/li&gt;
  &lt;li&gt;在需要一串数字的地方&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;数组&quot;&gt;数组&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;数组是一个对象容器，类型相同，个数固定&lt;/strong&gt;&lt;br /&gt;
下列代码演示创建一个数组，给数组复制，打印数组&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;public class ArrayDemo {
    public static void main(String[] args) {
        // declares an array of integers
        int[] anArray;

        // allocates memory for 10 integers
        anArray = new int[10];

        // initialize first element
        anArray[0] = 100;
        // initialize second element
        anArray[1] = 200;
        // and so forth
        anArray[2] = 300;
        anArray[3] = 400;
        anArray[4] = 500;
        anArray[5] = 600;
        anArray[6] = 700;
        anArray[7] = 800;
        anArray[8] = 900;
        anArray[9] = 1000;

        for (int i = 0 ; i &amp;lt; anArray.length ; i++) {
            System.out.println(&quot;Element at index &quot;+i+&quot;:&quot;+
            + anArray[i]);
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;输出如下图所示&lt;br /&gt;
&lt;img src=&quot;https://www.zhouxinye.com/images/blog/java/ArrayDemo.png&quot; alt=&quot;ArrayDemo&quot; title=&quot;ArrayDemo结果&quot; /&gt;&lt;/p&gt;

&lt;p&gt;声明一个数组需要使用[],该符号可以放在类型后面，也可以放在变量后面&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;float[] anArray;
float anArray[];
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;声明只是声明一个数组，并不是创建一个数组&lt;br /&gt;
创建一个数组需要使用new关键字，例如ArrayDemo中创建一个int数组&lt;br /&gt;
数组的初始化既可以如ArrayDemo一个一个赋值，也可以以如下方式赋值&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;int[] anArray = {
    100, 200, 300,
    400, 500, 600,
    700, 800, 900, 1000
};
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;数组的大小由大括号内的逗号相隔的值的数量决定&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;复制数组&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;public static void arraycopy(Object src, int srcPos,Object dest, int destPos, int length)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;从src的第srcPos个元素开始复制（length-destPos）个元素到数组dest的destPos和length&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;public class ArrayCopyDemo {
    public static void main(String[] args) {
        char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e',
                'i', 'n', 'a', 't', 'e', 'd' };
        char[] copyTo = new char[7];

        System.arraycopy(copyFrom, 2, copyTo, 0, 7);
        System.out.println(new String(copyTo));
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;输出如下图所示&lt;br /&gt;
&lt;img src=&quot;https://www.zhouxinye.com/images/blog/java/ArrayCopyDemo.png&quot; alt=&quot;ArrayCopyDemo&quot; title=&quot;ArrayCopyDemo结果&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;数组操作&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;复制数组copyOfRange&lt;/li&gt;
  &lt;li&gt;获取数组中特定值的位置binarySearch&lt;/li&gt;
  &lt;li&gt;比较两个数组 equals&lt;/li&gt;
  &lt;li&gt;用特定值填充数组 fill&lt;/li&gt;
  &lt;li&gt;按升序进行排序sort，Java SE&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;运算符&quot;&gt;运算符&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;优先级（由高到低）&lt;/strong&gt;&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;运算符&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;优先度&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;postfix&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;expr++ expr–&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;unary&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;++expr –expr +expr -expr ~ !&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;multiplicative&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;* / %&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;additive&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;+ -&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;shift&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;« » »&amp;gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;relational&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&amp;lt; &amp;gt; &amp;lt;= &amp;gt;= instanceof&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;equality&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;== !=&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;bitwise AND&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&amp;amp;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;bitwise exclusive OR&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;^&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;bitwise inclusive OR&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;|&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;logical AND&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&amp;amp;&amp;amp;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;logical OR&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;||&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;ternary&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;? :&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;assignment&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;= += -= *= /= %= &amp;amp;= ^= |= «= »= »&amp;gt;=&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;赋值算术一元运算&quot;&gt;赋值、算术、一元运算&lt;/h3&gt;
&lt;p&gt;赋值运算“=”:将右边的值赋值给左边&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;int i = 0;
boolean b = false;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;算术运算“+、-、*、/、%”，用法如下所示&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;class ArithmeticDemo {

    public static void main (String[] args) {

        int result = 1 + 2;
        // result is now 3
        System.out.println(&quot;1 + 2 = &quot; + result);
        int original_result = result;

        result = result - 1;
        // result is now 2
        System.out.println(original_result + &quot; - 1 = &quot; + result);
        original_result = result;

        result = result * 2;
        // result is now 4
        System.out.println(original_result + &quot; * 2 = &quot; + result);
        original_result = result;

        result = result / 2;
        // result is now 2
        System.out.println(original_result + &quot; / 2 = &quot; + result);
        original_result = result;

        result = result + 8;
        // result is now 10
        System.out.println(original_result + &quot; + 8 = &quot; + result);
        original_result = result;

        result = result % 7;
        // result is now 3
        System.out.println(original_result + &quot; % 7 = &quot; + result);
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;’=’其他用法: &lt;strong&gt;和其他运算符结合&lt;/strong&gt;,比如上述代码可以改写成:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;class ArithmeticDemo {

    public static void main (String[] args) {

        int result = 1 + 2;
        // result is now 3
        System.out.println(&quot;1 + 2 = &quot; + result);
        int original_result = result;

        result -= 1;
        // result is now 2
        System.out.println(original_result + &quot; - 1 = &quot; + result);
        original_result = result;

        result *= 2;
        // result is now 4
        System.out.println(original_result + &quot; * 2 = &quot; + result);
        original_result = result;

        result /= 2;
        // result is now 2
        System.out.println(original_result + &quot; / 2 = &quot; + result);
        original_result = result;

        result += 8;
        // result is now 10
        System.out.println(original_result + &quot; + 8 = &quot; + result);
        original_result = result;

        result %= 7;
        // result is now 3
        System.out.println(original_result + &quot; % 7 = &quot; + result);
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;’+’其他用法: &lt;strong&gt;拼接字符串&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;class ConcatDemo {
    public static void main(String[] args){
        String firstString = &quot;This is&quot;;
        String secondString = &quot; a concatenated string.&quot;;
        String thirdString = firstString+secondString;
        System.out.println(thirdString);
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;输出结果为:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;This is a concatenated string.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;一元运算符&quot;&gt;一元运算符&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;’+’一元加运算符，表示正值&lt;/li&gt;
  &lt;li&gt;’-‘一元减运算符，对一个数值取反值&lt;/li&gt;
  &lt;li&gt;’++(–)’自增(减)运算符，讲一个数值加(减)1&lt;/li&gt;
  &lt;li&gt;’!’布尔值反转，和逻辑补运算&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;class UnaryDemo {

    public static void main(String[] args) {

        int result = +1;
        // result is now 1
        System.out.println(result);

        result--;
        // result is now 0
        System.out.println(result);

        result++;
        // result is now 1
        System.out.println(result);

        result = -result;
        // result is now -1
        System.out.println(result);

        boolean success = false;
        // false
        System.out.println(success);
        // true
        System.out.println(!success);
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;++x(–x)和x++(x–)的区别&lt;/strong&gt;&lt;br /&gt;
这两者的区别体现在复合表达式当中，++x(–x)先加(减)1,在参与运算；x++(x–)先参与运算，在改变值&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;class PrePostDemo {
    public static void main(String[] args){
        int i = 3;
        i++;
        // prints 4
        System.out.println(i);
        ++i;			   
        // prints 5
        System.out.println(i);
        // prints 6
        System.out.println(++i);
        // prints 6
        System.out.println(i++);
        // prints 7
        System.out.println(i);
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;关系运算符&quot;&gt;关系运算符&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;==&lt;/li&gt;
  &lt;li&gt;!=&lt;/li&gt;
  &lt;li&gt;&amp;#62;&lt;/li&gt;
  &lt;li&gt;&amp;#62;=&lt;/li&gt;
  &lt;li&gt;&amp;#60;&lt;/li&gt;
  &lt;li&gt;&amp;#60;=&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;条件运算符&quot;&gt;条件运算符&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&amp;amp;&amp;amp;，逻辑与，表示两边都为true才为true&lt;/li&gt;
  &lt;li&gt;||，逻辑或，表示两边其中一个为true就为true&lt;/li&gt;
  &lt;li&gt;布尔类型表达式 ? 表达式1 : 表达式2，布尔类型表达式为true去表达式1否则为2&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;类型比较运算符-instanceof&quot;&gt;类型比较运算符 instanceof&lt;/h3&gt;
&lt;p&gt;instanceof可以将对象与指定类型进行比较，可以用来测试对象是否为类或子类的实例，以及接口的实现类的实例&lt;/p&gt;

&lt;h3 id=&quot;位操作符和位移操作符&quot;&gt;位操作符和位移操作符&lt;/h3&gt;
&lt;p&gt;操作符为 ~ « » »&amp;gt; &amp;amp; ^ |&lt;/p&gt;

&lt;h2 id=&quot;控制语句&quot;&gt;控制语句&lt;/h2&gt;
&lt;h3 id=&quot;if-then-else-和-if-then-语句&quot;&gt;if-then-else 和 if-then 语句&lt;/h3&gt;
&lt;p&gt;if-then语句只有在条件为true时，才会执行特定的代码段&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;void testIf() {
    boolean testEvaluates = true;
    if (testEvaluates){
        System.out.println(&quot;testEvaluates is true&quot;);
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;if-then-else语句，在条件为true时执行if后面的代码段，否则执行else后面的代码段&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;void testIfElse() {
    boolean testEvaluates = true;
    if (testEvaluates){
        System.out.println(&quot;testEvaluates is true&quot;);
    } else {
      System.out.println(&quot;testEvaluates is not true&quot;);
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;上面代码只是if-then-else的基本应用&lt;br /&gt;
该控制条件还可以像下面示例一样&lt;br /&gt;
下面代码在满足适合条件，就不会执行其他语句&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;class IfElseDemo {
    public static void main(String[] args) {

        int testscore = 76;
        char grade;

        if (testscore &amp;gt;= 90) {
            grade = 'A';
        } else if (testscore &amp;gt;= 80) {
            grade = 'B';
        } else if (testscore &amp;gt;= 70) {
            grade = 'C';
        } else if (testscore &amp;gt;= 60) {
            grade = 'D';
        } else {
            grade = 'F';
        }
        System.out.println(&quot;Grade = &quot; + grade);
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;switch&quot;&gt;switch&lt;/h3&gt;
&lt;p&gt;switch语句目前支持byte、short、char、int、Enum Type、String、Character,、Byte、Short以及Integer&lt;br /&gt;
具体用法如下&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;public class SwitchDemo {
    public static void main(String[] args) {

        int month = 8;
        String monthString;
        switch (month) {
            case 1:  monthString = &quot;January&quot;;
                     break;
            case 2:  monthString = &quot;February&quot;;
                     break;
            case 3:  monthString = &quot;March&quot;;
                     break;
            case 4:  monthString = &quot;April&quot;;
                     break;
            case 5:  monthString = &quot;May&quot;;
                     break;
            case 6:  monthString = &quot;June&quot;;
                     break;
            case 7:  monthString = &quot;July&quot;;
                     break;
            case 8:  monthString = &quot;August&quot;;
                     break;
            case 9:  monthString = &quot;September&quot;;
                     break;
            case 10: monthString = &quot;October&quot;;
                     break;
            case 11: monthString = &quot;November&quot;;
                     break;
            case 12: monthString = &quot;December&quot;;
                     break;
            default: monthString = &quot;Invalid month&quot;;
                     break;
        }
        System.out.println(monthString);
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;最终输出&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;August
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;每个case后面都有一个break，这样可以在执行适合条件的语句块后跳出switch语句块，如果不加break，则在执行适合的语句块后一直执行语句&lt;/p&gt;

&lt;h3 id=&quot;while-和-do-while&quot;&gt;while 和 do-while&lt;/h3&gt;
&lt;p&gt;while如下所示，当expression为true时会一直执行while代码块知道expression为false&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;while (expression) {
     statement(s)
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;do-while如下所示，他先执行代码块，在判断expression，为true继续执行代码块，知道expression为false&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;do {
     statement(s)
} while (expression);
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;他们两个区别在于，do-while至少会执行一次&lt;/p&gt;

&lt;h3 id=&quot;for语句&quot;&gt;for语句&lt;/h3&gt;
&lt;p&gt;for语句现在有两种方式&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;//通常for循环
for (initialization; termination;
     increment) {
    statement(s)
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;//增强型for循环
for（元素类型  元素名称 : 遍历数组（集合）（或者能进行迭代的））{
  statement(s)
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;上述两种方式都可以实现for循环，推荐第二种实现方式&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;class ForDemo {
    public static void main(String[] args){
      int[] numbers = {1,2,3,4,5,6,7,8,9,10};
      for(int i=1; i&amp;lt;numbers.length; i++){
        System.out.println(&quot;Count is: &quot; + numbers[i]);
      }
      for (int item : numbers) {
        System.out.println(&quot;Count is: &quot; + item);
      }
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;分支语句break和continue&quot;&gt;分支语句break和continue&lt;/h3&gt;
&lt;p&gt;break跳出当前循环
continue忽略本次循环，继续执行下一次循环
标签，可以让break跳出循环到标签位置，结束迭代；continue跳过用给定标签标记的外部循环的当前迭代，开始下次迭代&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;class ContinueWithLabelDemo {
    public static void main(String[] args) {

        String searchMe = &quot;Look for a substring in me&quot;;
        String substring = &quot;sub&quot;;
        boolean foundIt = false;

        int max = searchMe.length() -
                  substring.length();

    test:
        for (int i = 0; i &amp;lt;= max; i++) {
            int n = substring.length();
            int j = i;
            int k = 0;
            while (n-- != 0) {
                if (searchMe.charAt(j++) != substring.charAt(k++)) {
                    continue test;
                }
            }
            foundIt = true;
                break test;
        }
        System.out.println(foundIt ? &quot;Found it&quot; : &quot;Didn't find it&quot;);
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;return&quot;&gt;return&lt;/h3&gt;
&lt;p&gt;return 退出当前方法&lt;/p&gt;</content><author><name>Satoshi</name></author><category term="Java" /><summary type="html">目录</summary></entry><entry><title type="html">Java 面向对象编程的概念</title><link href="https://www.zhouxinye.com/2019/04/22/java-learn-concepts/" rel="alternate" type="text/html" title="Java 面向对象编程的概念" /><published>2019-04-22T00:00:00+08:00</published><updated>2019-04-22T00:00:00+08:00</updated><id>https://www.zhouxinye.com/2019/04/22/java-learn-concepts</id><content type="html" xml:base="https://www.zhouxinye.com/2019/04/22/java-learn-concepts/">&lt;p&gt;&lt;strong&gt;目录&lt;/strong&gt;&lt;/p&gt;

&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#what-is-an-object&quot; id=&quot;markdown-toc-what-is-an-object&quot;&gt;What Is an Object?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-is-a-class&quot; id=&quot;markdown-toc-what-is-a-class&quot;&gt;What Is a Class?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-is-inheritance&quot; id=&quot;markdown-toc-what-is-inheritance&quot;&gt;What Is Inheritance?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-is-an-interface&quot; id=&quot;markdown-toc-what-is-an-interface&quot;&gt;What Is an Interface?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-is-a-package&quot; id=&quot;markdown-toc-what-is-a-package&quot;&gt;What Is a Package?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;what-is-an-object&quot;&gt;What Is an Object?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;对象是由相关状态和行为组成的&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;将代码块放到对象的好处
    &lt;ol&gt;
      &lt;li&gt;模块化&lt;/li&gt;
      &lt;li&gt;信息隐藏&lt;/li&gt;
      &lt;li&gt;代码重复利用&lt;/li&gt;
      &lt;li&gt;可插入和可调式&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;what-is-a-class&quot;&gt;What Is a Class?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;类是创建对象的蓝图或原型&lt;/strong&gt;&lt;br /&gt;
在现实世界中，你会发现有许多相同特征的个体。比如:&lt;br /&gt;
所有的自行车都是按照一个蓝图进行设计，以下是自行车一种可能实现的类&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;class Bicycle {

    int cadence = 0;

    int speed = 0;

    int gear = 1;

    void changeCadence(int newValue) {
        cadence = newValue;
    }

    void changeGear(int newValue) {
        gear = newValue;
    }

    void speedUp(int increment) {
        speed = speed + increment;
    }

    void applyBrakes(int decrement) {
        speed = speed - decrement;
    }

    void printStates() {
        System.out.println(&quot;cadence:&quot; +
                cadence + &quot; speed:&quot; +
                speed + &quot; gear:&quot; + gear);
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;字段cadence、speed和gear表示自行车的状态&lt;br /&gt;
方法changeCadence、changeGear等表示他和外界的交互&lt;/p&gt;

&lt;p&gt;下面是一个BicycleDemo，创建对象并调用他的方法&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;class BicycleDemo {
    public static void main(String[] args) {

        // Create two different
        // Bicycle objects
        Bicycle bike1 = new Bicycle();
        Bicycle bike2 = new Bicycle();

        // Invoke methods on
        // those objects
        bike1.changeCadence(50);
        bike1.speedUp(10);
        bike1.changeGear(2);
        bike1.printStates();

        bike2.changeCadence(50);
        bike2.speedUp(10);
        bike2.changeGear(2);
        bike2.changeCadence(40);
        bike2.speedUp(10);
        bike2.changeGear(3);
        bike2.printStates();
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;运行结果截图&lt;br /&gt;
&lt;img src=&quot;https://www.zhouxinye.com/images/blog/java/BicycleDemo.png&quot; alt=&quot;BicycleDemo&quot; title=&quot;BicycleDemo结果&quot; /&gt;&lt;/p&gt;
&lt;h2 id=&quot;what-is-inheritance&quot;&gt;What Is Inheritance?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;继继承为组织和构造软件提供了一种强大的机制&lt;/strong&gt;&lt;br /&gt;
在面向对象编程语言中，一个父类可以拥有许多子类，但只允许继承一个父类&lt;br /&gt;
创建子类的关键字为&lt;strong&gt;extends&lt;/strong&gt;,如下列代码所示&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;class MountainBike extends Bicycle {

    // new fields and methods defining
    // a mountain bike would go here

}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;what-is-an-interface&quot;&gt;What Is an Interface?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;接口是连接类与外部的桥梁&lt;/strong&gt;&lt;br /&gt;
接口是抽象方法的集合，下面声明了一个自行车的接口&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;interface Bicycle {

    //  wheel revolutions per minute
    void changeCadence(int newValue);

    void changeGear(int newValue);

    void speedUp(int increment);

    void applyBrakes(int decrement);
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;实现接口需要使用关键字&lt;strong&gt;implements&lt;/strong&gt;,一个类可以实现多个接口&lt;br /&gt;
下面为实现上面接口的一个类&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;class ACMEBicycle implements Bicycle {

    int cadence = 0;
    int speed = 0;
    int gear = 1;

   // The compiler will now require that methods
   // changeCadence, changeGear, speedUp, and applyBrakes
   // all be implemented. Compilation will fail if those
   // methods are missing from this class.

    void changeCadence(int newValue) {
         cadence = newValue;
    }

    void changeGear(int newValue) {
         gear = newValue;
    }

    void speedUp(int increment) {
         speed = speed + increment;
    }

    void applyBrakes(int decrement) {
         speed = speed - decrement;
    }

    void printStates() {
         System.out.println(&quot;cadence:&quot; +
             cadence + &quot; speed:&quot; +
             speed + &quot; gear:&quot; + gear);
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;what-is-a-package&quot;&gt;What Is a Package?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;包是以逻辑的方式组织类和接口&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;https://docs.oracle.com/javase/8/docs/api/index.html&quot;&gt;Java Platform API Specification &lt;/a&gt;,Java SE平台提供的所有包、接口、类、字段和方法的完整清&lt;/p&gt;</content><author><name>Satoshi</name></author><category term="Java" /><summary type="html">目录</summary></entry></feed>