zoukankan      html  css  js  c++  java
  • 自学Java基础知识第二天

    Day02笔记

    课程内容

    1、基本概念

    2、常量

    3、变量

    4、运算符

    一、基本概念

    (一)注释

    1、在代码中,用于解释说明程序的部分。

    2、注释特点:

     1)编译器不会检查这部分内容的语法格式

     2)运行的时候会忽略掉这部分内容

    3、分类:

     单行注释:使用符号【//】,可以注释本行的内容,是//后面的内容

     特点:可以嵌套使用

     快捷键:ctrl + / 添加(取消)单行注释

    多行注释:使用符号【/* */】,可以注释多行的内容,两个星号中间的内容

     特点:可以换行注释、不能嵌套

     快捷键:ctrl + shift + / 添加多行注释

       ctrl + shift + 取消多行注释

    文档注释:在面向对象阶段学习

    快捷键:alt + shift + J 添加文档注释

    注意:光标在类中方法之外的位置,是给类添加文档注释的

    3、注释的作用:

     1)对程序进行解释说明:要求代码中,有30%行数都是用来写注释的

     2)对程序的思路进行描述

     3)对程序进行调试:通过注释的方式,快速定位出现错误的代码位置

    代码示例

    package com.offcn.demos;

    /**
     *
     */
    public class Demo01_LineComment {

    /**
    * 
    */
    public static void main(String[] args) {
    System.out.println("abc");
    //System.out.println("123");
    //System.out.println("456");
    System.out.println("qwe");

    /*/*System.out.println("HelloWorld");
    System.out.println("HelloWorld");*/
    System.out.println("HelloWorld");
    //System.out.println("HelloWorld");//向控制台输出打印HelloWorld
    }

     

    (二)关键字

    1、在java语言中,被赋予了特殊含义,特殊功能的英文单词

    2、图示:

     

     

    3、特点:

     1)全部小写

     2)自己起名字的时候,不要和关键字重名

     3)有两个保留字:goto、const,在当前版本不使用,但是以后是否使用未知。

    (三)标识符

    1、标识符:用于给类、接口、方法、变量、常量、枚举起名字的字符序列

    2、组成:

     1)英文大小写a-zA-Z

     2)数字0-9

     3)特殊符号$ _

     4)不常用符号:除了英文以外的其他语言的字符

    3、标识符的注意事项:

     1)不要和关键字重名,mychar合法、char非法

     2)数字不要开头,abc123合法、123abc非法、123非法

    4、关于光标的快捷键:

    光标向下一行:shift + enter

    光标向上一行:ctrl + shift + enter

    光标移到行首:home键

    光标移到行尾:end键

    按照完整的模块移动光标:ctrl + ←(→)

    倒序删除:delete键

    代码示例

    package com.offcn.demos;

    public class Demo02_name {

    public static void main(String[] args) {
    //int 表示一个整数,我们在后面学到,此处不用纠结
    int num = 10;
    int a = 10;
    int number1_$ = 111;
    int number1_$数字 = 111;
    int $abc = 123;
    int _abc = 123;
    //int 1_abc = 123;
    //int class = 123;
    }

     

    (四)Java的命名规则

    1、约定俗成的规则,编译器不会检查,但是在开发中必须要遵守的规则。

    2、规则:见名知意

     包:全部小写,域名倒着写

     例如:com.ujiuye.demos

     类和接口:每个单词的首字母大写,其余其母都小写,一般是一个名词

     例如:HelloWorld

     方法:第一个单词的首字母小写,从第二个单词开始,首字母大写,其余字母全小写

     一般是一个动词或者动宾结构

     例如:eat、getMax、getName、getSum

     变量:第一个单词的首字母小写,从第二个单词开始,首字母大写,其余字母全小写

     一般是一个名词或者形容词

     例如:name、myAge

     常量:所有字母都大写,单词和单词之间,使用_分隔,一般是一个名词

     例如:PI、E、MAXVALUE、SECONDSPER_MINITE

    二、常量

    1、常量:在程序运行过程中,其值不会发生改变的量,就是常量

    2、常量按照表示形式的分类:

     字面值常量:写出常量就可以知道常量的值,12, 12.34

     符号常量:给常量起了一个名字,看到名字就知道常量的意义,不知道常量的值

    3、常量按照数据类型分类:

     基本数据类型:简单的数据

    整数常量:所有整数,例如-12、15

    小数常量:所有的小数,例如-12.34,100.0

    字符常量:使用单引号引起来的符号,例如’a’、’1’

    布尔常量:用于表示是是非非的内容,true、false

     引用数据类型:基本类型组装而成的一些数据类型

    字符串常量:使用双引号引起来的字符序列,例如”HelloWorld”

     空常量:表示空,不指向任何数据,null

    代码示例

    package com.offcn.demos;

    public class Demo03_Constant {

    public static void main(String[] args) {
    System.out.println(10);//整数字面值常量
    System.out.println(3.5);//小数字面值常量
    System.out.println('');
    System.out.println(' ');
    System.out.println('z');
    System.out.println(' ');
    System.out.println('1');//字符常量需要使用''包围起来,且''中间有且仅有一个字符

    System.out.println(true);
    System.out.println(false);
    System.out.println("abc123defg!");
    //System.out.println(null);
    }

     

    三、变量

    (一)变量的定义

    1、变量:在程序运行过程中,其值会发生改变的量。

    2、定义格式:

     数据类型 变量名 = 变量值;

    3、使用变量的原因:

     在程序中,有一些代表相同意义的数据,在不断发生变化,例如年龄

     定义一个不变的变量名称,表示那些不断变化的数字

     在内存中,其实就是一段内存空间,空间中的数据可以不断的变化

    4、图示:

     

     

    代码示例

    package com.offcn.demos;

    public class Demo04_Variable {

    public static void main(String[] args) {
    //int 表示整数类型的变量
    //定义格式:数据类型  变量名称  = 变量值;
    int age = 18;

    System.out.println(age);

    age = 28;

    System.out.println(age);
    }

     

    (二)数据类型

    1、java是一个强类型语言:需要显式的说明内存空间的大小,声明变量的时候,就需要说明变量的数据类型,以此来表示内存的大小。

    2、数据类型的分类:

     基本数据类型:在jdk中已经定义好的一些类型,这些类型无法增加,描述的都是一些简单的数据。这些数据描述的是数值【本身】。

     引用数据类型:数据描述的不是数据本身,而是在描述真正数据的【地址】。一般都是使用一些自定义的类去描述,相当于各种基本类型的组合,形成一个复杂的类型。

    3、基本数据类型:四类八种

     整数类型

     byte 1个字节(8条电路,8个位,8bit) -128~127

     short 2个字节 -2^15~2^15-1

     int 4个字节 -2^31~2^31-1

     long 8个字节 -2^63~2^63-1

     小数类型:IEEE754标准

     float 4个字节 >8个字节long类型

     double 8个字节 >4个字节的float类型

    字符类型:

     char  2个字节   0-65535

    布尔类型:

     boolean  未知 truefalse

    代码示例

    package com.offcn.demos;

    public class Demo05_BasicVariable {

    public static void main(String[] args) {
    /*
    * byte
    * short
    * int
    * long
    *
    * float
    * double
    *
    * char
    *
    * boolean
    *
    * */

    //byte num1 = 128;
    //System.out.println(num1);

    short num2 = 6666;
    System.out.println(num2);

    //int num3 = 2147483648;
    //System.out.println(num3);

    /*long num4 = 2147483648;
    System.out.println(num4);*/

    double num5 = 3.14;
    System.out.println(num5);

    //float num6 = 3.1;

    /*
    * 在同一个方法中定义变量的时候,
    * 变量不允许重名
    *
    * */
    char ch1 = ' ';
    char ch2 = 'n';
    char ch3 = '';
    //char ch3 = '';

    System.out.println(ch3);

    boolean bo1 = true;
    boolean bo2 = false;

    System.out.println(bo1);
    System.out.println(bo2);

    }

     

    (三)常量的默认值

    1、java中整数类型的默认值是int类型。例如,随意定义一个整数的字面值常量,这个数据默认为int类型。但是,当有些字面值常量大于int的取值范围时,编译器会报错,说数据超出int范围,我们此时需要在数据的后面加上l(L),告诉编译器,这个数是一个long类型的数据,不是int类型

    2、java默认的小数类型是double类型,double类型比float大,随意定义一个小数的字面值常量,都会被当做double类型,如果此时将默认的double类型数据存储到空间更小的float类型中,会有精度损失,此时,我们需要在数据后面加上f或者F,表示这个数字就是一个float类型的数据。

    代码示例

    package com.offcn.demos;

    public class Demo06_DefaultType {

    public static void main(String[] args) {
    //int 2147483647
    //int num1 = 2147483648;

    /*
    * java中整数类型的默认值是int类型
    * 例如,随意定义一个整数的字面值常量,这个数据默认为int类型
    * 但是,当有些字面值常量大于int的取值范围时,编译器会报错,说数据超出int范围,
    * 我们此时需要在数据的后面加上lL),告诉编译器,这个数是一个long类型的数据,不是int类型
    * */
    long num1 = 2147483648L;
    //System.out.println(2147483648);

    /*
    * java默认的小数类型是double类型
    * double类型比float大,随意定义一个小数的字面值常量,
    * 都会被当做double类型,如果此时将默认的double类型数据存储到空间更小的float类型中,
    * 会有精度损失
    * 此时,我们需要在数据后面加上f或者F,表示这个数字就是一个float类型的数据
    * */
    float num3 = 3.1F;
    }

     

    (四)变量定义的注意事项

    1、变量的作用域

     作用域:变量能够起作用的范围

     范围:变量定义在哪一对大括号内,就在哪一对大括号内起效

     变量的定义:变量的声明,带有数据类型的部分,就属于定义变量

     变量的访问:只有变量名称,没有数据类型

    2、在同一个范围内,不允许出现重名的变量

    3、在方法中,变量必须先赋值,后使用

    4、变量的声明定义,和变量的赋值可以分开

    5、可以在一行定义多个变量,格式:

    数据类型 变量名称1 = 变量值1, 变量名称2 = 变量值2, 变量名称3 = 变量值3,..., 变量名称n = 变量值n;

    不建议这样书写

    代码示例

    package com.offcn.demos;

    public class Demo07_VariableNotice {

    public static void main(String[] args) {

    /*int a = 10;
    int b = 20;
    int c = 30;*/

    //int a = 10, b = 20, c = 30;

    /*int a, b, c;

    a = 10;
    b = 20;
    c = 30;*/

    //int num = 10;
    /*int num;

    num = 10;

    System.out.println(num);*/

    /*int num = 11;

    System.out.println(num);*/

    /*//1.变量的作用域
    int num = 10;
    //int num = 999;
    {
    int a = 111;
    System.out.println(a);

    num = 666;
    System.out.println(num);//666
    }

    //System.out.println(a);
    System.out.println(num);//666*/
    }


     

    (五)数据类型转换之隐式转换

    1、当数据类型较小的数据存储进数据类型较大的数据时,会先将数据类型较小的数据,提升为数据类型较大的数据,再存储到数据类型较大的变量中。多个数据类型进行计算的时候,会先将较小的类型提升为较大的类型,之后再进行运算,最后存储。

    2、数据类型大小的排序:

    byte < short = char < int < long < float < double

    3、注意事项:

    byte 、short 、char、int计算的时候,会直接将数据类型提升为int,再去计算,而非较大的数据类型

    int类型以及以上,在互相运算时,才会提升为较大的数据类型

    代码示例

    package com.offcn.demos;

    public class Demo08_up {

    public static void main(String[] args) {
    /*int num = 3;

    //隐式类型提升,隐式转换
    double dou = num;

    System.out.println(dou);*/


    /*int num1 = 3;
    byte num2 = 4;

    //先将byte提升为intintint相加,得到int结果,再提升为double,存储进double
    double dou = num1 + num2;*/

    byte num1 = 4;
    short num2 = 5;

    //错误示范:先将byte提升为shortshortshort相加,得到short结果,再提升为int,存储进int
    //正确示范:先将byteshort分别直接提升为int,再进行运算得到int,最终把int结果存储到int变量中
    int result = num1 + num2;
    }

     

    (六)数据类型转换之强制转换

    1、大范围的数据类型的数据,要转成小范围数据类型的数据,就需要进行强制转换

    2、转换格式:

    (要转成的数据类型)待转换的数据类型

    3、注意事项:

    强制转换可能会产生数据精度损失,也可能不会产生

    代码示例

    package com.offcn.demos;

    public class Demo09_Down {

    public static void main(String[] args) {
    int num = 129;

    //(要转成的数据类型)待转换的数据类型
    byte b = (byte)num;

    System.out.println(b);
    }

     

    (七)常量优化机制

    当运算时,运算的数据都是常量时,会在编译的时候直接计算结果, 将结果和所要赋值的变量的数据类型取值范围进行比较,如果在范围内,就直接赋值,如果不在范围内,就报错。如果运行变量,常量优化机制就不会起作用

    代码示例

    package com.offcn.demos;

    public class Demo10 {

    public static void main(String[] args) {

    /*
    * 常量优化机制
    * 当运算时,运算的数据都是常量时,会在编译的时候直接计算结果,
    * 将结果和所要赋值的变量的数据类型取值范围进行比较,如果在范围内,就直接赋值,
    * 如果不在范围内,就报错
    *
    * 如果运行变量,常量优化机制就不会起作用
    * */

    byte b1 = 1;
    byte b = 10 + 20;
    System.out.println(b);

    /*byte b = 127 + 1;
    System.out.println(b);*/

    /*byte b1 = 10;
    byte b2 = 20;
    byte result = b1 + b2;
    System.out.println(result);*/
    }

     

    (八)字符类型

    1、使用单引号引起来的单个字符。使用关键字char来进行声明。

    2、在计算机中,所有的数据都是用数字进行表示的,字符也不例外。

    3、具体的字符,存储在计算机中需要使用数字表示,数字和字符之间就存在一一对应的关系:

     【编码】:将人类语言转为机器的语言

     【解码】:将机器语言转为人类的语言

     其中,表示人类语言和机器语言一一对应关系的表,叫做编码表

    4、ASCII码表

     

     

     规律:数字本身连续,从0开始,对应的值是48

     大写字母本身连续,从A开始,对应的值是65

     小写字母本身连续,从a开始,对应的值是97

    5、世界上各个国家都有自己的编码表(字符集),就出现了统一世界各国的字符集,叫做utf-8,也叫作万国码。

    6、UTF-8万国码,兼容世界各国语言,其中中文占3个字节!中国的字符集,GB2312,GBK,在GBK中中文占2个字节!

    7、Java语言默认Unicode码,Unicode码使用 ‘uxxxx’ 表示,其中xxxx是四位16进制的数据

    代码示例

    package com.offcn.demos;

    public class Demo11_Char {

    public static void main(String[] args) {
    char ch = 'u5475';
    System.out.println(ch);

    char ch1 = 97;
    System.out.println(ch1);

    System.out.println((char)100);
    }

     

    (九)字符串类型

    1、使用双引号引起来的一些列的字符的组合,是一个引用数据类型,字符串的变量空间中记录的是地址值。

    2、声明字符串数据类型需要使用:String

    3、任何数据类型与字符串类型进行加号运算,都会做字符串的拼接操作,例如:10 + "abc"得到"10abc"

     因此,数字类型转为String(字符串)类型,只需要和空字符串进行拼接操作即可

    代码示例

    package com.offcn.demos;

    public class Demo12_String {

    public static void main(String[] args) {
    //System.out.println("HelloWorld!");

    /*String str = "HelloWorld!";
    System.out.println(str);*/

    String str = "";//空串,一个字符也没有的字符串

    //"abcqwe"
    String str1 = "abc";
    String str2 = "qwe";

    String result = str1 + str2;
    System.out.println(result);

    //将一切基本数据类型转换为String字符串的方式:和空串进行拼接

    int num1 = 10;
    int num2 = 20;
    System.out.println(num1 + num2);

    //任何数据类型与String进行加号运算,都会得到一个新的拼接之后的字符串
    String s1 = num1 + "";//10 -> "10"
    System.out.println(s1 + num2);
    }

     

    四、运算符

    (一)算数运算符

    1、用于进行数学运算的符号

    2、+ - * / %

    3、+:加法运算符

     1)计算数学加法

     2)字符串拼接

     3)表示正数

    4、/:除法运算符

     1)如果是两个整数相除,结果依然是一个整数,会直接省略小数点后的部分

     2)当参与运算的数据中有一个是小数,结果都是小数

    5、%:取余(取模)运算符

     1)取余运算中,结果的符号只与第一个参数的符号有关

     2)例如:判断一个数字是否为偶数,当某个数字对2取余为0,即能够整除2,结果就是偶数,否则是奇数

    代码示例

    package com.offcn.demos;

    public class Demo13_Math {

    public static void main(String[] args) {
    /*System.out.println(10 + 20);

    System.out.println(10 / 2);
    System.out.println(10 / 4);

    System.out.println(10.0 / 3);
    System.out.println(10 / 4.0);*/

    System.out.println(10 % 3);
    System.out.println(-10 % 3);
    System.out.println(10 % -3);
    System.out.println(-10 % -3);
    }

     

    (二)自增自减运算符

    1、++自增、--自减

    2、作用:让变量自身,自增或者自减1

    3、运算规律:

     1)自增自减在变量的前面还是后面,作为语句的时候结果没有任何差别

     2)作为表达式的时候,当自增自减在后,先做其他事儿,再进行自增自减; 当自增自减在前,先自增自减再做其他事儿

    代码示例

    package com.offcn.demos;

    public class Demo14_addMySelf {

    public static void main(String[] args) {
    /*
    * 语句:结束的时候以分号结尾
    * 表达式:没有分号结尾
    *
    * 1.自增自减在变量的前面还是后面,作为语句的时候结果没有任何差别
    * 2.作为表达式的时候,当自增自减在后,先做其他事儿,再进行自增自减
    *   当自增自减在前,先自增自减再做其他事儿
    * */
    int num = 10;

    //num++;
    //++num;

    //--num;
    //num--;

    //System.out.println(num--);
    System.out.println(--num);

    /*System.out.println(num++);

    System.out.println(num);*/
    //System.out.println(++num);
    }

     

    (三)赋值运算符

    1、用于给变量名赋值的运算符

    2、分类:

     1)基本赋值运算符:=

     2)扩展赋值运算符:+=、-=、*=、/=、%=

    3、基本赋值运算符:将符号右侧的值,赋给左侧的变量名称

    4、扩展运算符:

     将符号左右两侧的数据先进行算术运算,之后再做赋值运算

    代码示例

    package com.offcn.demos;

    public class Demo15_assignment {

    public static void main(String[] args) {
    int num = 10;

    //num += 5;
    //num -= 3;//num = num - 3;
    //num *= 2;//num = num * 2;
    //num /= 3;//num = num / 3;
    num %= 2;//num = num % 2;

    /*
    *
    * num += 5;
    *
    * num = num + 5;
    *
    * 1.获取符号右侧的num值为10
    * 2.105相加得到15
    * 3.将得到的15重新赋值回num中,将num原有的10改为15
    *
    * */
    System.out.println(num);


    }

     

    (四)比较运算符

    1、用于比较两个数值是否相等,比较结果是一个布尔类型的值

    2、分类:

     ==:等于

     !=:不等于

     >:大于

     <:小于

     >=:大于等于

     <=:小于等于

    3、注意:运算结果一定是布尔类型!即true或者false

    代码示例

    package com.offcn.demos;

    public class Demo16_compare {

    public static void main(String[] args) {
    int num1 = 10;
    int num2 = 10;
    int num3 = 20;

    System.out.println(num1 == num2);
    System.out.println(num1 != num2);
    System.out.println(num1 == num3);
    System.out.println(num1 != num3);

    /*
    * -2 <= x <= 100
    * 代码中不能用这种数学上的形式去表示
    * */
    }

     

    (五)逻辑运算符

    1、用于处理逻辑运算的运算符

    2、处理逻辑:逻辑值,处理结果:逻辑值(待处理的数据时布尔,处理之后结果依然是布尔)

    3、& 逻辑与:将符号两侧布尔类型的结果进行合并,做与的操作

     true & true 结果:true(全真为真,一假即假,所有的条件都满足的时候,才能为true,一个条件不满足就是false)

     true & false 结果:false
     false & true 结果:false

     false & false 结果:false

    4、| 逻辑或:将符号两侧的布尔类型的结果进行合并,做或运算

     true | true 结果:true(一真为真,全假即假,一个条件满足就是true,所有的条件都不满足的时候,才能为false)

     true | false 结果:true
     false | true 结果:true

     false & false 结果:false

    5、&&:短路与:执行结果和逻辑与完全一样(短路与的执行效率更高)

     和逻辑与有一样的执行结果,都具有“一假即假”的一票否决权,当第一个条件判断为false的时候,就不会再去判断第二个条件了。但是逻辑与&,会两个都去判断

    6、||:短路或:执行逻辑和逻辑或完全一样(短路或的执行效率更高)

     和短路或一样,都具有“一真即真”的一票通过权,当第一个条件判断为true时,就不会再去判断后面的条件了

    7、!:逻辑非:取反,遇真为假,遇假为真

     true:false

    代码示例

    package com.offcn.demos;

    public class Demo17_logic {

    public static void main(String[] args) {
    int num = 10;
    System.out.println(10 > 3 & 10 <9);
    System.out.println(10 > 3 | 10 <9);

    System.out.println(10 > 3 && 10 <9);

    System.out.println(!(10 > 3));
    }

     

  • 相关阅读:
    qt env
    如何通过迅雷加速下载Android SDK
    Linux下USB从设备使用gadget API
    一些链接
    SMT
    usb topology分析
    Linux驱动的地址空间和硬件地址空间说明
    PCB设计基础知识
    ARM的位置无关程序设计在Bootloader中的应用
    Active Directory基础之一
  • 原文地址:https://www.cnblogs.com/masterhxh/p/13628562.html
Copyright © 2011-2022 走看看