zoukankan      html  css  js  c++  java
  • java基础

    java基础

    1.注释、标识符、关键字

    注释

    • 平时编写代码,在代码量比较少的时候,我们可以清楚的知道自己写的,但是当项目结构一旦复杂起来,我们就需要用到注解了。

    • 注解并不会被执行,是给我们写代码的人看的

    • 方便多人协作,便于他人理解

    • 书写注释是一个非常好的习惯

    • 平时写代码一定要注意规范

    Java中的注解有三种

     * 单行注释
     * 多行注释
     * 文档注释
     public class HelloWorld {
         public static void main(String[] args) {
             //单行注释
             //输出一个 Hello,World!
             /*
             多行注释
             多行注释
             多行注释
             *///JavaDoc:文档注释         /**      */
             /**
              * @Description HelloWorld
              * @Author 序猿之途
              */
             System.out.println("Hello,World!");
         }
     }

     

    关键字

    标识符

    • Java所以的组成部分都需要名字。类名、变量名以及方法名被称为标识符

    • 标识符注意点

      • 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线( _ )开始

      • 首字符之后可以是字母(A-Z 或者 a-z ),美元符( $ )、下划线 ( _ )或者数字的任意字符组合

      • 不能使用关键字作为变量名或者方法名

      • 标识符是大小写敏感

      • 合法标识符举例:age 、 $salary 、_value 、 __1_value

      • 非法标识符举例:123abc 、-salary 、#abc

      • 可以使用中文命名,但是不建议这样去用,也不建议使用拼音,很low

    2.数据类型

    • 强类型语言

      • 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用

    • 弱类型语言

      例如:javaScript 等

    • Java的数据类型分为两大类

      • 基本类型(primitive type)

      • 引用类型 (reference type)

     public class Dome02 {
         //八大基本数据类型
    //整数
         int num1 = 10;   //最常用
         byte num2 = 20;
         short num3 = 30;
         long num4 = 30L;    //Long类型要在数字后面加个L
    //小数:浮点数
         float num5 = 50.1F; //float类型要在数字后面加个F
         double num6 = 3.141592653589793238462643;
     ​
         //字符
         char name = '国';
         //字符串,String不是关键字,而是一个类
         String name = "张三";
     ​
         //布尔值: 是非   true/false
         boolean flag = true ; 
     ​
     }

     
    • 什么是字节

      • 位(bit):是计算机 内部数据 储存的最小单位,11001100是一个八位二进制数。

      • 字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写B来表示

      • 1B(byte,字节)= 8bit(位)

      • 字符:是指计算机中使用的字母、数字、字和符号

         

         

      • 1bit表示1位

      • 1Byte表示一个字节 1Byte = 8bit

      • 1024 Byte = 1 KB

      • 1024 KB = 1MB

      • 1024 MB = 1GB

      • ........

    面试问题

     public class Demo03 {
     ​
         public static void main(String[] args) {
     ​
             //整数拓展: 进制  二进制0b   十进制     八进制0    十六进制0x
    int i =10;
             int i2 = 010;//八进制
             int i3 = 0x10;//十六进制    0~9 A~F 16
     ​
             System.out.println(i);
             System.out.println(i2);
             System.out.println(i3);
             System.out.println("==============================================");
             //==================================================================
             //浮点数拓展     银行业务怎么表示?钱
             //BigDecimal    数学工具类
             //==================================================================
             //float     有限  离散  舍入误差    大约  接近但不相等
             //double
             //最好完全避免使用浮点数进行比较
             //最好完全避免使用浮点数进行比较
             //最好完全避免使用浮点数进行比较
    float f = 0.1f; //0.1
             double d = 1.0/10;  //0.1
             System.out.println(f==d);
             System.out.println(f);
             System.out.println(d);
     ​
             float d1 = 23456431216546134f;
             float d2 = d1 + 1;
             System.out.println(d1==d2);
             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 表: 97 = a 、65 = A    2字节    0 - 65535   Excel
    //U0000 UFFFF
    char c3 = 'u0061';
             System.out.println(c3); //a
    //转义字符
             //  	  制表符
             //  
      换行
             System.out.println("Hello	World");
             System.out.println("Hello
    World");
             System.out.println("==================================================");
     ​
             String sa = new String("Hello World");
             String sb = new String("Hello World");
             System.out.println(sa==sb); //false
     ​
             String sc = "Hello World";
             String sd = "Hello World";
             System.out.println(sc==sd); //true
             //对象    从内存分析
    //布尔值扩展
             boolean flag = true;
             if (flag==true){}
             if (flag){}
         }
     }
     ​

     

     

    3.类型转换

    • 由于java是强类型语言,所以要进行有些算法的时候,需要用到类型转换

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

       

    • 强制类型转换

    • 自动类型转换

       public class Demo04 {
           public static void main(String[] args) {
       ​
               int i = 128;
               //byte e = i  ; 内存溢出
               byte e = (byte)i;
       ​
               //强制转换  (类型)变量名        高到低
               //自动转换                      低到高
       ​
               System.out.println(i);
               System.out.println(e);
       ​
               /*注意点:
               1.不能对 boolean 进行转换
               2.不能把对象类型转换为不相干的类型
               3.在把高容量转换到低容量的时候,或者精度问题!
                */
       ​
               System.out.println("===============================");
               System.out.println((int)23.4);  //23
               System.out.println((int)-45.25f);  // -45
       ​
               System.out.println("==================================");
               char c = 'a';
               int d = c+1 ;
               System.out.println(d);
               System.out.println((char)d);
               System.out.println("================================");
       ​
       ​
               //操作比较大的数的时候,注意溢出问题
               //JDK7新特性,数字之间可以用下划线分割
               int money = 10_0000_0000;
               int years = 20;
               int total = money*years;    //-1474836480,计算的时候溢出了
               System.out.println(total);
               long total2 = money*years;
               System.out.println(total2); //两个整数相乘默认是int类型,转换之前已经存在溢出问题了
      long total3 = money*((long)years);  //先把一个数转换为Long类型
               System.out.println(total3);
               
           }
       }

       

       

    4.变量、常量、作用域

    变量

    • 变量是什么:就是可以变化的量

    • java是一种强类型语言,每个变量都必须声明其类型。

    • Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域

    • 注意事项:

      • 每个变量都有类型,类型可以是基础类型,也可以是引用类型。

      • 变量名必须是合法的标识符。

      • 变量声明是一条完整的语句,因此每个声明都必须以分号结束

         public class Demo05 {
             public static void main(String[] args) {
         ​
                 //int a,b,c;
                 //int a=1,b=2,c=3;  //程序可读性
                 String name = "langlang";
                 char x = 'X';
                 double pi = 3.14;
         ​
             }
         }

         

         

    常量

    • 常量(Constant):初始化(initialize)后不能再改变值!不会变动的值。

    • 所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。

    • 常量名一般使用大写字符

    作用域

    • 类变量

    • 实例变量

    • 局部变量

       public class Demo06 {
       ​
           //类变量   static
           static double salary = 2000;
       ​
           //属性:变量
      //实例变量:从属于对象:如果不自行初始化,则是这个类型的默认值 0  0.0
           //布尔值:默认是false
           //除了基本类型,其余的默认值都是null
           String name;
           int age;
       ​
           //main方法
           public static void main(String[] args) {
       ​
               //局部变量:必须声明和初始化值
               int i = 10;
               System.out.println(i);
       ​
               //变量类型  变量名字 = new Demo06();
               Demo06 domo06 = new Demo06();
               System.out.println(domo06.age);
               System.out.println(domo06.name);
       ​
               System.out.println(salary);
       ​
           }
       ​
       ​
           //其他方法
           public void add(){
       ​
           }
       ​
       }
       ​

       

    5.运算符

    • Java语言支持如下运算符:优先级()

      • 算术运算符:+,-,*,/,%,++,--

      • 赋值运算符 =

      • 关系运算符:>,<,>=,<=,==,!=,instanceof

      • 逻辑运算符:&&,||,!

      • 位运算符:&,|,^,~,>>,<<,>>>(了解)

      • 条件运算符 ? :

      • 扩展赋值运算符:+=,-=,*=,/=

    •  

    6.包机制、JavaDos

    包机制

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

    • 包语句的语法格式为:

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

    • 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用“import”语句可完成该功能

    JavaDoc

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

    • 参数信息

      • @author作者名

      • @version版本号

      • @since 指明需要最早使用的jdk版本

      • @param参数名

      • @return 返回值情况

      • @throws 异常抛出情况

    • javadoc -encoding UTF-8 -charset UTF-8 文件名

  • 相关阅读:
    11. 优秀的基数统计算法--HyperLogLog
    10. Redis实现限流功能
    9. Redis中游标迭代器(scan)
    8. 使用Redis查询附近的人或商家
    7. Redis的管道技术
    6. Redis在内存用完时会怎么办?以及Redis如何处理已过期的数据?
    5. 详解Redis中的事务
    4. Redis的配置文件以及持久化
    2020.7.15 遇到一个bug
    A Review of Visual Tracking with Deep Learning
  • 原文地址:https://www.cnblogs.com/DiaoStudy/p/13265001.html
Copyright © 2011-2022 走看看