Java学习之基础篇

这篇博客详细介绍了Java学习的基础内容,包括如何使用IntelliJ IDEA编写代码,深入理解字节和数据类型的定义,数据类型的转换规则,以及Java中的变量类型和运算符。此外,还提及了包机制和JavaDoc的初步概念。
摘要由CSDN通过智能技术生成

Java学习之基础篇

为了更形象的将知识点进行总结,我基本给每个知识点都附上了源代码,通过代码的运行来加深对知识点的掌握

1.使用IDEA编写代码

· 新建src文件夹新建java类

· 快捷指令psvm、sout

public class base1 {
    public static void main(String[] args) {//快捷键psvm(适用于IDEA)
        System.out.println();//快捷键sout(适用于IDEA)
    }
}

2.什么是字节

· 位(bit)是计算机内部数据最小储存单位(b)

· 字节(byte)是计算机内部数据处理的基本单位(B)

· 1B=8b

3.数据类型

public class demo1data_type {
    public static void main(String[] args) {
        //八大数据类型(基本类型)(接口类型:类、接口、数组)

        //整数
        int num1 = 10;//最常用  4个字节 -2147483648~2147483647
        byte num2 = 20;//1个字节 -128~127
        short num3 = 30;//2个字节 32768~32767
        long num4 = 30L;//Long类型要在数字后面加L,表明其是Long型  8个字节

        //小数:浮点数
        float num5 = 12.1F;//float类型要在数字后面加F,表明其是float类型  4个字节
        double num6 = 3.1415926535;//8个字节

        //字符
        char name1 = '国';//用单引号  2个字节
        //字符串,String不是关键字,是类
        String name2 = "高宇昂";//所以是双引号

        //布尔值:对错
        boolean judge = true;//false
    }
}

数据类型拓展

public class demo1data_type {
    public static void main(String[] args) {
        //八大数据类型(基本类型)(接口类型:类、接口、数组)

        //整数
        int num1 = 10;//最常用  4个字节 -2147483648~2147483647
        byte num2 = 20;//1个字节 -128~127
        short num3 = 30;//2个字节 32768~32767
        long num4 = 30L;//Long类型要在数字后面加L,表明其是Long型  8个字节
        //整数拓展 进制问题 二进制0b 十进制 八进制0 十六进制0x
        int i1 = 10;
        int i2 = 010;//八进制
        int i3 = 0x10;//十六进制
        System.out.println("========================================================");
        System.out.println("整数拓展");
        System.out.println(i1);
        System.out.println(i2);
        System.out.println(i3);

        //小数:浮点数
        float num5 = 12.1F;//float类型要在数字后面加F,表明其是float类型  4个字节
        double num6 = 3.1415926535;//8个字节
        //浮点数拓展  舍入误差
        //最好避免完全使用浮点数进行比较
        //BigDecimal 数学工具类 了解一下
        float f = 0.1f;
        double d = 1.0 / 10;
        System.out.println("========================================================");
        System.out.println("浮点数拓展");
        System.out.println(f == d);//false
        System.out.println(f);
        System.out.println(d);

        float f1 = 32424131231f;
        float f2 = f1 + 1;
        System.out.println(f1 == f2);//true

        //字符
        char name1 = '国';//用单引号  2个字节
        //字符串,String不是关键字,是类
        String name2 = "张三";//所以是双引号
        //字符拓展
        //所有字符的本质还是数字
        System.out.println("========================================================");
        System.out.println("字符拓展");
        char c1 = 'a';
        char c2 = '中';
        System.out.println(c1);
        System.out.println((int) c1);//强制转换
        System.out.println(c2);
        System.out.println((int) c2);//强制转换
        //Unicode表
        char c3 = '\u0061';
        System.out.println(c3);
        //转义字符
        // \t 制表符
        // \n 换行符
        System.out.println("========================================================");
        //对象 从内存分析
        String sa = new String("hello world");
        String sb = new String("hello world");
        System.out.println(sa == sb);

        String sc = "hello world";
        String sd = "hello world";
        System.out.println(sc == sd);

        //布尔值:对错
        boolean judge = true;//false
        System.out.println(num1);
        System.out.println(num4);
        //布尔值拓展
        if (judge) {}
        if (judge == true) {}//这两个是一个意思
    }
}

/*运行结果:
    ========================================================
整数拓展
10
8
16
========================================================
浮点数拓展
false
0.1
0.1
true
========================================================
字符拓展
a
97
中
20013
a
========================================================
false
true
10
30

进程已结束,退出代码为 0*/

4.数据类型转换

· 运算中,不同类型的数据先转换为同一类型,然后再进行运算。

由低到高转换byte,short,char->int->long->float->double(小数优先级大于整数)

强制类型转换&自动类型转换

public class Demo2DataTansform {
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte)i;//byte最大为127,内存溢出

        System.out.println("=========================");
        System.out.println(i);
        System.out.println(b);

        //强制类型转换 (类型)变量名  高->低
        //自动类型转换  低->高
        /*注意点:
        1.不能对布尔值进行转换
        2.不能把对象类型转换为不相干的类型
        3.在把大容量转换到低容量的时候,强制转换
        4.转换的时候可能存在内存溢出,或者精度问题
         */
        System.out.println("=========================");
        System.out.println((int)23.7);
        System.out.println((int)-45.89f);

        char c = 'a';
        int d = c+1;//自动类型转换
        System.out.println("=========================");
        System.out.println(d);
        System.out.println((char)d);

        //操作比较大的数时,注意溢出问题
        //JDK7新特性,数字之间可以用下划线分割,方便阅读
        int money = 10_0000_0000;
        int years = 20;
        int total1 = money*years;//溢出
        long total2 = money*years;//溢出并未解决,因为是先计算再转型,计算结束后已经溢出
        long total3 = money*((long)years);//成功解决溢出,先转型再计算

        System.out.println("=========================");
        System.out.println(total1);
        System.out.println(total2);
        System.out.println(total3);
    }
}

/*运算结果
=========================
128
-128
=========================
23
-45
=========================
98
b
=========================
-1474836480
-1474836480
20000000000
*/

5.Java变量

类变量、实例变量、局部变量、常量

public class Demo3Variable {
    /*
    命名规则:
    1.见名知意
    2.类名:首字母大写+驼峰原则
    3.类成员变量:首字母小写+驼峰原则
    4.方法名:首字母小写+驼峰原则
    5.局部变量:首字母小写+驼峰原则
    6.常量:大写字母+下划线
     */

    //变量作用域
    //类变量、实例变量、局部变量、常量

    //实例变量 从属于对象,在方法外,类内部
    //实例变量在类内部,方法外部,从属于对象,如果不初始化,数值默认为0或0.0,布尔值默认false,除了基本类型其余都是null
    String name;
    int age;//使用后会在声明处变色

    //类变量 相比实例变量加了关键字static
    static double salary = 2500;

    //常量 常量名一般使用大写
    static final double MONTH = 12;

    public static void main(String[] args) {
        //局部变量 必须声明和初始化值 仅在这一个花括号里有用
        int i = 1;
        System.out.println(i);

        //实例变量 变量类型 变量名称 = new 类名
        Demo3Variable demo3variable = new Demo3Variable();//快捷键ALT加回车 可见使用实例变量非常麻烦
        System.out.println(demo3variable.age);//使用后会在声明处变色

        //类变量
        System.out.println(salary);//类变量在这就可以直接输出

        //常量
        System.out.println(MONTH);
    }
}

/*运行结果
1
0
2500.0
12.0
*/

6.Java运算符

​ 算数运算符:+,-,,/,%,++,–
​ 赋值运算符:=
​ 关系运算符:>,<,>=,<=,==,!=,instanceof
​ 逻辑运算符:&&,||,!
​ 位运算符:&,|,^,~,>>,<<,>>>
​ 条件运算符:?:
​ 拓展赋值运算符:+=,-+,
=,/=

public class Demo4Operator {
    /*
    算数运算符:+,-,*,/,%,++,--
    赋值运算符:=
    关系运算符:>,<,>=,<=,==,!=,instanceof
    逻辑运算符:&&,||,!
    位运算符:&,|,^,~,>>,<<,>>>
    条件运算符:?:
    拓展赋值运算符:+=,-+,*=,/=

    快捷键:ctrl+D 复制当前行到下一行
     */
    public static void main(String[] args) {

        int a = 21;
        int b = 10;

        System.out.println("=============================");
        System.out.println("算术运算");
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/b);
        System.out.println(a%b);

        System.out.println("=============================");
        System.out.println("关系运算");
        System.out.println(a>b);
        System.out.println(a<b);
        System.out.println(a==b);
        System.out.println(a!=b);

        long c = 12321432121312L;
        int d = 121;
        short e = 12;
        byte f = 7;

        System.out.println("=============================");
        System.out.println("类型问题");
        System.out.println(c+d+e+f);//Long 有一个数为long,则结果为long
        System.out.println(d+e+f);//int 也可以选择强制类型转换
        System.out.println(e+f);//int 没有long 结果都为int型

        int a1 = 1;
        int b1 = a1++;
        int a2 = 1;
        int c1 = ++a1;

        int a3 = 1;
        int b2 = a3--;
        int a4 = 1;
        int c2 = --a4;
        System.out.println("=============================");
        System.out.println("自增自减");
        System.out.println(b1);
        System.out.println(c1);
        System.out.println(b2);
        System.out.println(c2);

        //很多运算我们会使用工具类来做
        //幂运算
        double pow = Math.pow(2, 3);
        System.out.println("=============================");
        System.out.println("调用方法来进行幂运算");
        System.out.println(pow);

        System.out.println("=============================");
        System.out.println("逻辑运算");
        boolean m = true;
        boolean n = false;

        System.out.println("m&&n:"+(m&&n));
        System.out.println("m||n:"+(m||n));
        System.out.println("!(m&&n):"+!(m&&n));

        //短路运算
        int j = 1;
        boolean k = (j>2)&&(j++>1);
        System.out.println("=============================");
        System.out.println("短路运算");
        System.out.println(k);
        System.out.println(j);//因为j>2为false,所以k必为false,不需要执行后面的j++>1,自然也不会自加,所以值不变

        /*
        位运算
        A = 0011 1100
        B = 0000 1101

        A&B = 0000 1100 全为1才为1,否则为0
        A|B = 0011 1101 有1则为1
        A^B = 0011 0001 相同为1,否则为0
        ~B = 1111 0010 取反
         */
        int A = 0b00111100;
        int B = 0b00001101;

        System.out.println("=============================");
        System.out.println("位运算");
        System.out.println(Integer.toBinaryString(A&B));
        System.out.println(Integer.toBinaryString(A|B));
        System.out.println(Integer.toBinaryString(A^B));
        System.out.println(Integer.toBinaryString(~B));//此处存疑,有无更好的方法将输出的二进制数组设为定长

        /*
        问:怎样运算2*8最快?

        2*2*2*2

        0000 0000  0
        0000 0010  2
        0000 0100  4
        0000 1000  8
        0001 0000  16
        每次乘2,左移一位<<
         */
        System.out.println("=============================");
        System.out.println("位运算之高效性");
        System.out.println(2<<3);

        //拓展赋值运算符
        int t = 10;
        int y = 20;
        t+=y;//t=t+y
        t-=y;//t=t-y

        //字符串连接符
        int m1 = 1;
        int n1 = 2;
        System.out.println("=============================");
        System.out.println("字符串连接符");
        System.out.println(""+m1+n1);//12
        System.out.println(m1+n1+"");//3

        //条件运算符(三元运算符)
        //x?y:z
        //如果x==true,则结果为y,否则结果为z
        int score = 70;
        String judge = score<60?"不及格":"及格";

        System.out.println("=============================");
        System.out.println("三元运算符");
        System.out.println(judge);
    }
}

/*运行结果
=============================
算术运算
31
11
210
2
1
=============================
关系运算
true
false
false
true
=============================
类型问题
12321432121452
140
19
=============================
自增自减
1
3
1
0
=============================
调用方法来进行幂运算
8.0
=============================
逻辑运算
m&&n:false
m||n:true
!(m&&n):true
=============================
短路运算
false
1
=============================
位运算
1100
111101
110001
11111111111111111111111111110010
=============================
位运算之高效性
16
=============================
字符串连接符
12
3
=============================
三元运算符
及格
*/

包机制

· 为了更好地组织类,java提供了包机制,用于区别类名的命名空间

· 一般利用域名倒置作为包名

package com.base;//包

import java.util.Date;//调包

public class base2 {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date);
    }
}

JavaDoc

· 稍微了解,以后会详细说明

· javadoc命令是用来生成自己API文档的

· 参数信息:

​ @author作者名

​ @version版本号

​ @since指明需要使用的最早的JDK版本

​ @param参数名

​ @return返回值情况

​ @throws异常抛出情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值