java 初学者基础教学



1.关键字

关键字是指被Java语言赋予特定含义的单词,如this、super、class等,关键字中所有的字母都是小写。

2.标识符



标识符就是给类,接口,方法,变量等起名字时使用的字符序列。可由任意顺序的大小写字母、数字字符、_和$组成。
注意事项:
    A:不能以数字开头。
    B:不能包含除_、$以外的特殊符号。
    C:不能是Java中的关键字。
    D:Java严格区分大小写。
命名规则   为了提高阅读性,做到见名知意 。
    包:其实就是文件夹,用于把不同的类名进行区分。全部小写,多级包名用.隔开。如com.baidu
    类或者接口:每个单词的首字母必须大写。如HelloWorld
    方法或者变量:一个单词:单词的首字母小写。多个单词:从第二个单词开始,每个单词的首字母大写。如helloWorld
    常量:单词的每个字母都大写,多个单词用_隔开,如STUDENT_MAX_AGE



3.注释

注释就是用于说明解释程序的文本,可以提高代码的阅读性,帮助我们调试代码。可以先写注释再写代码。将自己的思想通过注释先整理出来,在用代码去体现。因为代码仅仅是思想的一种体现形式而已。
    A. 单行注释  可以嵌套使用。
        格式: //注释文字  
    B. 多行注释  可以在程序内部使用,不可以嵌套多行注释。
        格式: /*  注释文字  */ 
    C. 文档注释  注释内容可以被javadoc解析,生成一套以网页文件形式体现的该程序的说明文档。
        格式:/** 注释文字 */


4.常量


常量是指在程序执行的过程中其值不可以发生改变。
常量的分类:  
    A:字符串常量  用双引号括起来的内容。如"helloworld"、"a"
    B:整数常量   所有的整数。
    C:小数常量   所有的小数。
    D:字符常量   单引号括起来的内容。如'a'
    E:布尔常量   比较特殊   只有true和false
    F:空常量     null
Java针对整数常量提供了4中表现形式
    二进制、八进制、十进制、十六进制
    规则:进制越大,表现形式越短。
数据组长:
    二进制:由0,1组成。以0b开头。
    八进制:由0,1,...7组成。以0开头。
    十进制:由0,1,……9组长。整数默认是十进制的。
    十六进制:由0,1,……9,a,b,c,d,e,f(大小写均可)组成。以0x开头。
有符号的数据表示法:
    在计算机内,有符号数有3种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的。
    原码:
        就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
    反码:
        正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
    补码;
        正数的补码与原码相同,负数的补码是在其反码的末位加1。
5.变量


变量值在程序执行过程中,在某个范围内其值可以发生改变的量。只有是数据不确定的时候,就可以定义变量。
定义格式:
    数据类型 变量名 = 初始化值
注意:
    A:格式是固定的,记住格式,以不变应万变。
    B:变量的作用范围(一对{}之间有效),并且,在同一个大括号内不能同时定义同名的变量。 
    C:变量只能存放某一个类型的数据。
    D:初始化。没有初始化值的变量不能直接使用。你只要在使用前给值就行,不一定非要在定义的时候立即给值。最好在定义时给值。
变量的作用域:作用域从变量定义的位置开始,到该变量所在的那对大括号结束。
生命周期:变量从定义的位置开始就在内存中活了;变量到达它所在的作用域的时候就在内存中消失了。

数据类型:Java语言是强类型语言,针对每一种数据都定义了明确的数据类型。 
数据类型分类

基本数据类型

占用字节数

整数

 

byte

1

short

2

int

4

long

8

浮点数

 

float

4

double

8

字符

 

char

2

布尔

 

boolean

1

  • 整数默认是int类型,浮点数默认是double类型,double类的小数精度比float类型的小数更高。
  • 长整型后缀用L或者l标记,建议使用L;单精度浮点数用F或者f标记,建议使用F。

引用数据类型包括类、接口和数组。

类型转换
简单来说,类型转换就是不同类型之间相互的转化。类型转换可分为两种,默认类型转换和强制类型转换。一般来说,我们在运算的时候,要求参与运算的数据必须一致。
    注意:boolean不能转换成其他的数据类型
默认转换  从小的数据类型到大的数据类型,数据类型自动提升。
    A:byte short char-->int-->long-->float-->double
    B:byte,short,char相互之间不转换,他们参与运算首先转换为int类型。
强制转换  从大的数据类型到小的数据类型
    格式:目标数据类型 变量 = (目标数据类型)(被转换的数据);

运算符

运算符就是对常量和变量进行操作的符号。
分类:算术运算符,赋值运算符,比较运算符,逻辑运算符,位运算符,三目运算符。

算术运算符:

+,-,*,/,%,++,--     
++,--运算符的使用:
    单独使用:
        放在操作数的前面和后面效果一样。
    参与运算使用:
        放在操作数的前面,先自增或者自减,然后在参与运算。
        放在操作数的后面,先参与运算,在自增或者自减。
    作用:就是对变量进行自增或者自减。
%:取模。5%2=1;负数对正数取模结果为负数,正数对负数取模结果为正数。
+:还可以做为连接符使用。

赋值运算符:

基本的赋值运算符:=
    把=右边的数据赋值给左边。
扩展的赋值运算符:+=,-=,×=,%=
    +=把左边和右边做加法,然后赋值给左边,其他的同理。
    扩展的赋值运算符隐含了一个强制类型转换。如short s=1; s=s+1;就会报错,因为s+1后类型被默认提升为int类型,不能赋值给short类型的s;而short s=1; s += 1;就没有问题。

比较运算符:

==,!=,>,>=,<,<=
特点:
    无论你的操作是简单还是复杂,结果都是boolean类型。
注意:
    "=="不能写成"=".

逻辑运算符:

&,|,^,!
    &&,||
    逻辑运算符用于连接布尔类型表达式或值,在java中不可以写成3<x<6,要写成3<x&x<6;
    表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。
        算术表达式:a+b
        比较表达式:a==b
结论:
    逻辑与&;有false则false。
    逻辑或|;有true则true。
    逻辑异或^;相同为false,不同为true。
    逻辑非!;非false则true,非true则false。偶数个不改变自身。

    &&和&的区别?同理||和|的区别?
        A:最终结果一样。
        B:&&具有短路效果,左边false,右边不执行。
    开发中常用的逻辑运算符:
        &&,||,!

位运算符:要做位运算,首先要把数据转换为二进制。

&,|,^,~
    <<,>>,>>
<<:空位补0,被移除的高位丢弃。//把<<左边的数据*(2的移动次幂)。如:3<<2=3*2^2=12;效率最高。
>>: 被移位的二进制最高位是0,右移后,空缺位补0;//同理。把>>左边的数据/(2的移动次幂).如:24>>2=24/(2*2)=6。最高位是1,最高位补1。
>>>:无符号右移,被移位二进制最高位无论是0或者是1,空缺位都用0补。
&:如果二进制位和0进行&运算,结果是0;和1进行&运算结果是原值。
|:任何二进制位和0进行|运算,结果是原值;和1进行|运算结果是1。
^: 任何相同二进制位进行^运算,结果是0;不同二进制位^运算结果是1。
    ^的特点:一个数据对另一个数据位异或两次,该数本身不变。此特点可以用于不借助第三方变量的值互换。
<code class="hljs cs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">/*
对两个整数变量的值进行互换
*/</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> Demo {

    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">static</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">main</span>(String[] args) {
        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> a = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>, b = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>;

        change1(a, b);
        change2(a, b);
        change3(a, b);
    }

    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">static</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">change3</span>(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> a, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> b) {
        System.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">out</span>.println(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"a:"</span> + a + <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"---b:"</span> + b);
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
        System.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">out</span>.println(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"a:"</span> + a + <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"---b:"</span> + b);
    }

    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">static</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">change2</span>(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> a, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> b) {
        System.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">out</span>.println(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"a:"</span> + a + <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"---b:"</span> + b);
        a = a + b;
        b = a - b;
        a = a - b;
        System.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">out</span>.println(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"a:"</span> + a + <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"---b:"</span> + b);
    }

    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">static</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">change1</span>(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> a, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> b) {
        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> c;
        System.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">out</span>.println(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"a:"</span> + a + <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"---b:"</span> + b);
        c = a;
        a = b;
        b = c;
        System.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">out</span>.println(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"a:"</span> + a + <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"---b:"</span> + b);
    }

}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li></ul>

三目运算符

格式:(比较表达式)?表达式1:表达式2
    如果条件为true,运算后的结果是表达式1
    如果条件为false,运算后的结果是表达式2