• 疯狂Java基础Day1


    ——每过一遍基础,都是一次提升!

    太多遗忘了,慢慢补。。。

    推一个Java学习教程--->b站搜:狂神说Java系列(排序完毕)

    推荐原因:讲的不错,会涉及到底层,也会讲讲面试。

    一、注释

    主要掌握单行注释多行注释JavaDoc文档注释

    谨记在心的两句话:

    • 书写注释是一个好习惯
    • 写代码必须注意规范
    /**
     * @author 我在吃大西瓜呢
     * (JavaDoc文档注释)
     */
    public class HelloWorld {
        public static void main(String[] args) {
            // 输出一个hello world (单行注释)
            /* 输出一个hello world (多行注释)*/
            System.out.println("Hello World!");
        }
    }
    

    二、标识符和关键字

    类名变量名方法名都被称为标识符

    注意点:

    • 所有标识符必须以字母、美元符$、下划线_ 开始,首字符后随意,但为了规范,建议用好English
    • 不能使用关键字作为变量名或方法名
    • 标识符大小写敏感

    关键字:(不认识不要紧,慢慢积累)

    image.png

    三、数据类型

    Java是强类型语言,要求变量的使用要符合规定,所有变量必须先定义,后使用

    因此,安全性高,但速率较低。鱼与熊掌不可兼得焉!

    image.png

    首先了解什么是字节?

    • 位(bit):是计算机内部数据存储的最小单位,11001100是一个八位二进制数
    • 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B表示
    • 1 byte = 8 bit
    • 字符:计算机中使用的字母、数字、字和符号

    一些转换关系:

    • 1 B = 8 b
    • 1024 B = 1 KB
    • 1024 KB = 1 M
    • 1024 M = 1 G
    • 1024 G = 1 TB

    八大基本数据类型:

    public class Demo1 {
        public static void main(String[] args) {
            //八大基本数据类型
            //整数
            byte num1 = 10;
            short num2 = 500;
            int num3 = 6666; //常用
            long num4 = 999999999L; //long类型一般在数字后面加L
            //小数
            float num5 = 9.6F; //float类型一般在数字后面加F
            double num6 = 66.99;
            //字符
            char name  = 'W';
            //字符串(引用类型)
            //String id = "我在吃大西瓜呢";
            //布尔值
            boolean flag1 = true;
            boolean flag2 = false;
        }
    }
    

    相关拓展:

    public class Demo2 {
        public static void main(String[] args) {
            //整数拓展:        进制       二级制0b     十进制     八进制0     十六进制0x
            int i = 10;
            int i2 = 010;
            int i3 = 0x10;
            System.out.println(i); //10
            System.out.println(i2); //8
            System.out.println(i3); //16
            System.out.println("===============================================");
            //=================================================================
            //浮点数拓展: 问--->有关银行业务怎么表示?
            //           答--->BigDecimal数学工具类
            //因为float是有舍入误差
            //example1:
            float f = 0.1f; //0.1
            double d = 1.0/10; //0.1
            System.out.println(f==d); //false
            //example2:
            float d1 = 12345678998765f;
            float d2 = d1+1;
            System.out.println(d1==d2); //true
            System.out.println("===============================================");
            //=================================================================
            //字符拓展 强制转换
            //所有的字符本质还是数字 参考Unicode编码表
            char c1 = 'a';
            char c2 = '我';
            System.out.println(c1);
            System.out.println((int)c1); //97
            System.out.println(c2);
            System.out.println((int)c2); //25105
            char c3 = 'u0061';
            System.out.println(c3); //a
            //转义字符 (百度一下!)
            // 	 制表符
            // 
     换行
            System.out.println("===============================================");
            //=================================================================
            //布尔值拓展
            boolean flag = true;
            //以下表示方法一样 less is more!
            //if(flag==true){}
            //if (flag){}
        }
    }
    

    四、类型转换

    Java是强类型语言,故有些运算时需要用到类型转换

    image.png

    public class Demo3 {
        public static void main(String[] args) {
            int i = 128;
            //强制转换 (类型)变量名 高->低
            byte b = (byte)i;
            //自动转换 低->高
            double d = i;
            
            System.out.println(i); //128
            System.out.println(b); //-128 内存溢出
            System.out.println(d); //128.0
            /*
            注意:
            1.不能对布尔值进行转换
            2.不能把对象类型转换为不相干的类型
            3.高--->低 强制转换
            4.转换时可能存在溢出问题或者精度问题
             */
        }
    }
    

    关于溢出问题:操作比较大的数时,要注意溢出问题

    public class Demo4 {
        public static void main(String[] args) {
            int money = 10_0000_0000; //JDK7的新特性
            int years= 30;
            int sum1 = money*years; //-64771072溢出
            long sum2 = money*years; //-64771072,默认是int,转换之前已存在问题
            long sum3 = money*(long)years; //30000000000
        }
    }
    

    五、变量、常量、作用域

    1、变量

    注意事项:

    • 每个变量都有类型
    • 变量名必须为合法的标识符

    2、常量

    常量(constant):初始化后不能再改变值!

    常量名一般用大写字母

    final double PI = 3.14;
    

    3、变量作用域

    public class Demo5 {
        //类变量 static
        static  double salary = 2500;
    
        //实例变量:从属于对象;若不自行初始化,则输出默认值
        //默认值 :0  0.0  false null
        String name;
        int age;
    
        //main方法
        public static void main(String[] args) {
            //局部变量:必须声明和初始化值
            int i = 10;
            System.out.println(i); //10
    
            //变量类型 变量名
            Demo5 demo5 = new Demo5();
            System.out.println(demo5.age); //0
            System.out.println(demo5.name); //null
    
            //类变量 static
            System.out.println(salary); //2500
    
            demo5.method(); //100
        }
    
        //其他方法:
        public void method(){
            int i = 100; //局部变量
            System.out.println(i);
        }
    }
    

    一些命名规范:重要指数五颗星★★★★★

    • 所有变量、方法、类名:见名知意
    • 类成员变量:首字母小写和驼峰原则(monthSalary)
    • 局部变量:首字母小写和驼峰原则
    • 常量:大写字母和下划线(MAX_VALUE)
    • 类名:首字母大写和驼峰原则(Boy、GoodBoy)
    • 方法名:首字母小写和驼峰原则(run()、toRun())

    六、基本运算符

    image.png

    1、算术运算符

    public class Demo6 {
        public static void main(String[] args) {
            //二元运算符
            int a = 10;
            int b = 20;
            int c = 25;
            int d = 25;
    
            System.out.println(a+b); //30
            System.out.println(a-b); //-10
            System.out.println(a*b); //200
            System.out.println(a/(double)b); //0.5
            System.out.println(a%b); //10
        }
    }
    

    值得理解指数五颗星★★★★★

    public class Demo8 {
        public static void main(String[] args) {
            //一元运算符
            int a = 3;
            int b = a++; //先给b赋值,再自增
            //a++   a = a+1
            System.out.println(a); //4
            //++a   a = a+1
            int c = ++a; //先自增,再给c赋值
            System.out.println(a); //5
            System.out.println(b); //3
            System.out.println(c); //5
        }
    }
    

    2、关系运算符

    public class Demo8 {
        public static void main(String[] args) {
            //关系运算符返回结果: true or false
            int a = 10;
            int b = 20;
    
            System.out.println(a>b); //false
            System.out.println(a<b); //true
            System.out.println(a==b); //false
            System.out.println(a!=b); //true
        }
    }
    

    3、逻辑运算符

    public class Demo9 {
        public static void main(String[] args) {
            //逻辑运算符
            //与 and         或 or            非(取反)
            boolean a = false;
            boolean b = true;
    
            System.out.println("a && b :"+(a&&b)); //false
            System.out.println("a || b :"+(a||b)); //true
            System.out.println("!(a && b) :"+(!(a&&b))); //true
    
            //短路运算
            int c = 5;
            boolean d = (c<4)&&(c++<4); //c<4必然错了,故短路
            System.out.println(d);
            System.out.println(c); //5,因为不实现自增
        }
    }
    

    4、位运算符

    public class Demo10 {
        public static void main(String[] args) {
            /*
            A =  0011 1100
            B =  0000 1101
            --------------
            A&B:0000 1100 上下比较,两个都是1则为1,否则为0
            A/B:0011 1101 上下比较,两个都为0则为0,否则为1
            A^B:0011 0001 上下比较,相同为0,不同为1
            ~B :1111 0010 与B完全相反
    
            问:2 * 8 = 16 怎样运算最快?
            答:2 * 2 * 2 * 2
            必记!!!
            << 左移 *2
            >> 右移 /2
    
            0000 0000 0
            0000 0001 1
            0000 0010 2
            0000 0011 3
            0000 0100 4
            0000 1000 8
            0001 0000 16
             */
            System.out.println(2<<3);
        }
    }
    

    5、条件(三元)运算符

    public class Demo11 {
        public static void main(String[] args) {
            //x ? y : z
            //若x==true,则结果为y,否则为z
            int score = 80;
            String type = score < 60 ? "不及格" : "及格";
            System.out.println(type); //及格
        }
    }
    

    6、扩展运算符

    public class Demo12 {
        public static void main(String[] args) {
            int a = 10;
            int b = 20;
    
            a+=b; //a=a+b
            a-=b; //a=a-b
            System.out.println(a); //10
            //------------------------------------------------------
            System.out.println("----------------------------------");
            //字符串连接符 + 
            System.out.println(""+a+b); //1020
            System.out.println(a+b+""); //30
        }
    }
    

    七、包机制

    一般利用公司域名倒置作为包名

    如:www.baidu.com

    package com.baidu
    

    Java中导入包机制:import (IDEA现在一般会自动导入)

    八、JavaDoc生成文档

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

    • @author 作者名
    • @version 版本号
    • @since 指明需要最早使用的jdk版本
    • @param 参数名
    • @return 返回值情况
    • @throws 异常抛出情况
  • 相关阅读:
    Tensorflow中实现BN为什么需要加入这个额外依赖?见CS231N作业源码
    为何神经网络权重初始化要随机初始化,不能以0为初始化
    Batch Normalization&Dropout浅析
    Git版本回退和撤销修改的区别
    linux下安装git提示”无法打开锁文件 /var/lib/dpkg/lock
    数据特征选择法
    深度学习笔记整理
    全面掌握IO(输入/输出流)
    startActivity时报错Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVI
    LitePal——Android数据库框架完整使用手册
  • 原文地址:https://www.cnblogs.com/wangzheming35/p/14337189.html
Copyright © 2020-2023  润新知