Java教程

Java基础学习

本文主要是介绍Java基础学习,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java基础学习

注释

  1. 单行注释:只能注释单行文字
//单行注释
  1. 多行注释:可以注释多行文字
/*
多行注释
多行注释
*/
  1. JavaDoc:文档注释
/**
 * @Description HelloWorld
 * @Author CheemsNow
 */

标识符

  • 所有的标识符只能以字母(A-Z或a-z),美元符($),或者下划线(_)开始
  • 首字符之后可以是字母(A-Z或a-z),美元符($),下划线(_)或数字的任何字符组合
  • 不能使用关键字作为变量名或方法名
  • 标识符大小写敏感
  • 合法标识符举例:
    age、$salary、_value、__1_value
    
  • 非法标识符举例:
    123abc、-salary、#abc
    
  • 可以使用中文命名,但不推荐,也不要用拼音,很low
    String 变量名 = "变量名"
    String bianLiangMing = "变量名"
    

数据类型

  • 强类型语言
    • 要求变量的使用严格符合规定,所有变量都必须先定义后才能使用(安全性↑,效率↓)
  • 弱类型语言
  • 和强类型语言相反
  1. 基本类型
  • 整数类型
    • byte:占1个字节范围
    • short:占2个字节范围
    • int: 占4个字节范围
    • long: 占8个字节范围
  • 浮点类型
    • float:占4个字节范围
    • double: 占8个字节范围
  • 字符类型
    • char: 占2个字节范围
  • 布尔类型
    • boolean: 占1个位,只有true和false
//八大数据类型
//整数
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 = '国';

//布尔值:是非
boolean flag1 = true;
boolean flag2 = false;
  • 补充知识:字节
    • 位(bit):计算机内部数据存储的最小单位,11001100是一个八位二进制数
    • 字节(byte):数据处理的基本单位,用大写B表示
    • 1B(byte,字节)= 8bit(位)
    • 字符:计算机中使用的字母、数字、字和符号
    • 1bit表示1位,1Byte表示一个字节 1B=8b。
    • 1024B = 1KB,1024KB = 1M,1024M = 1G
  • 数据类型扩展
    //整数扩展:进制 二进制:0b 十进制 八进制:0 十六进制:0x
    int i1 = 10;
    int i2 = 010; //八进制(0) 8
    int i3 = 0x10; //十六进制(0~9 A~F) 16
    
    //浮点数扩展:最好避免使用浮点数进行比较,推荐使用BigDecimal数学工具类
    //float 有限 离散 舍入误差 大约 接近但不等于
    //double
    float f = 0.1F; //0.1
    double d = 1.0/10; //0.1
    System.out.println(f==d); //false
    float d1 = 23131312312312313F;
    float d2 = d1 + 1;
    System.out.println(d1==d2); //true
    
    //字符扩展
    char c1 = 'a';
    char c2 = '中';
    System.out.println((int)c1); //强制转换 97
    //所有的字符本质还是数字
    //编码 Unicode 表:(97=a 65=A) 2字节
    //U0000 UFFFF
    char c3 = '\u0061';
    System.out.println(c3); //a
    
    //转义字符
    //\t 制表符
    //\n 换行
    System.out.println("Hello\tWorld"); //Hello World
    
    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){}
    //Less is More! 代码要精简易读 一般使用if(flag){}这种写法
    
  • 类型转换
    • 由于Java是强类型语言,所以进行某些运算的时候需要进行类型转换
      低 ---------------------------> 高
      byte,short,char->int->long->float->double //浮点数优先级大于整数
      
    • 运算中,不同类型数据要先转化为同一类型才能运算
    • 类型的转换分为强制类型转换和自动类型转换
      //强制转换 (类型)变量名 高---低
      int i = 128;
      byte b = (byte)i; //-128 内存溢出
      //自动转换 低---高
      int i =128;
      double d = i;
      
      /*
      注意点:
      1. 不能对布尔值进行转换
      2. 不能把对象类型转换成不相干的类型
      3. 在把高容量转换到低容量的时候,强制转换
      4. 转换的时候可能存在内存溢出,或者精度问题
       */
      System.out.println((int)23.7); //23
      System.out.println((int)-45.89F); //-45
      char c = 'a';
      int d = c+1;
      System.out.println(d); //98
      System.out.println((char)d); //b
      
      //操作比较大的数的时候要注意溢出的问题
      //JDK新特性:数字间可以用下划线分割
      int money = 10_0000_0000;
      int years = 20;
      int total = money*years; //-1474836480,计算的时候溢出
      long total2 = money*years; //默认是int,转换前已经出问题,结果同上
      lont total3 = money*((long)years); //20亿 先转换为long类型
      
  1. 引用类型
  • 接口
  • 数组

变量

  • 变量就是可以变化的量:用于确定一个空间,空间里的内容不确定
  • 由于Java是强类型语言,每个变量都必须先声明类型
  • Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
    type varName = [=value] [{,varName[=value]}];
    //数据类型 变量名=值;
    //可以使用逗号隔开来声明多个同类型的变量,但不推荐,要保证代码的可读性
    
  • 注意事项:
    • 每个变量都有类型,类型可以使基本类型和引用类型
    • 变量名必须是合法的标识符
    • 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
      char x = 'x';
      
  • 变量的作用域
    • 类变量
    • 实例变量
    • 局部变量
      public class Variable{
        static int allClicks = 0; //类变量:实例变量前面加个static,static是修饰符,不存在先后顺序
        String str = "hello world"; //实例变量:从属于对象;如果不初始化,则使用默认值 0 0.0
        //布尔值默认是false,除了基本类型,其余默认都是null
      
        public void method(){
        int i = 0; //局部变量:必须声明和初始化值
        }
      }
      
  • 变量的命名规范
    • 所有变量、方法、类名:见名知意
    • 类成员变量:首字母小写和驼峰原则:monthSalary
    • 局部变量:首字母小写和驼峰原则
    • 常量:大写字母和下划线:MAX_VALUE
    • 类名:首字母大写和驼峰原则:Man,GoodMan
    • 方法名:首字母小写和驼峰原则:run(),runRun()

常量

  • 常量(Constant):初始化(initialize)后不能改值,即不变的值
  • 常量可理解为特殊的变量,值被设定后,在程序运行过程中不能改变
    final 常量名=值;
    final double PI=3.14;
    
  • 常量名一般使用大写字符

运算符

  • Java语言支持的运算符:优先级使用()
    • 算术运算符:+,-,*,/,%,++,--
      //一元运算符 自增++ 自减--
      int a = 3;
      int b = a++; //先赋值再自增,b=3,a=4
      int c = ++a; //先自增再赋值,a=5,c=5
      
      //幂运算 2^3 2*2*2=8 很多运算会使用工具类操作
      double pow = Math.pow(3,2); //3的2次方,结果是9
      
    • 赋值运算符:=
      package operator;
      //二元运算符
      int a = 10;
      int b = 20;
      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(b%a); //0 20/10=2...0
      //要注意作用域,当结果有可能有小数时,要强制转换,防止精度丢失
      //其中,当运算的数据类型有long(double)时,输出结果默认为long(double),否则为int
      
    • 关系运算符:>,<,>=,<=,==,!=,instanceof
      //关系运算符返回的结果:正确,错误 布尔值
      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
      
    • 逻辑运算符:&&,||,!
      //逻辑运算符
      //与(and):两个真才为真
      //或(or):一个真则为真
      //非(取反):真则假,假则真
      //异或:相同为假,不同则真
      boolean a = true;
      boolean b = false;
      System.out.println(a && b); //false
      System.out.println(a || b); //true
      System.out.println(!(a && b)); //true
      
      //短路运算
      int c = 5;
      boolean d = (c<4)&&(c++<10);
      System.out.println(d); //false
      System.out.println(c); //5 因为(c<4)为假,所以(c++<10)就不需要运算了
      
    • 位运算符:&(与),|(或),^(异或),~(非),>>,<<,>>>(无符号右移,始终补0,不考虑正负数)(了解即可)
      /*
      A = 0011 1100
      B = 0000 1101
      
      A&B = 0000 1100
      A|B = 0011 1101
      A^B = 0011 0001
      ~B = 1111 0010
       */
      //2*8如何运算最快 2*8=16 2*2*2*2
      //<<(左移) *2
      //>>(右移) /2
      System.out.println(2<<3); //16
      /*
      0000 0010 2
      0000 0100 4
      0000 1000 8
      0001 0000 16
      底层直接改,效率极高
       */
      
    • 条件运算符:?:
      //三元运算符
      //x?y:z
      //如果x为真,x=y,否则x=z
      int score = 80;
      String type = score < 60 ?"不及格":"及格";
      
    • 扩展赋值运算符:+=,-=,*=,/=
      a+=b; //a = a+b;
      a-=b; //a = a-b;
      
      //字符串连接符 +,String
      System.out.println(a+b); //30
      System.out.println(""+a+b); //1020
      System.out.println(a+b+""); //30 先计算再链接字符串
      

包机制(包的本质就是文件夹)

  • 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间
  • 包语句的语法格式为:
    package pkg1[.pkg2[.pkg3...]];
    
  • 一般利用公司域名倒置作为包名:com.baidu.www
  • 为了能够使用某一个包的成员,需要在Java程序中使用"import"语句导入该包
    import package1[.package2].(classname|*);
    

JavaDoc

  • javadoc命令是用来生成自己的API文档的
  • 参数信息
    • @author 作者名
    • @version 版本号
    • @since 指明需要最早使用的jdk版本
    • @param 参数名
    • @return 返回值情况
    • @throws 异常抛出情况
//在命令行
javadoc -encoding UTF-8 -charset UTF-8 文件名
//-encoding设置编码 -charset设置字符集 防止乱码
//idea中,在工具栏中找到 Tool,然后在子菜单中找到 Generate JavaDoc,填好配置信息生成文档
这篇关于Java基础学习的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!