Java基础

JAVA基础

注释

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

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

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

 

Java中的注释有三种

  1. 单行注释

 //内容
  1. 多行注释

 /*内容*/
  1. 文档注释

 /**内容*/

标识符

关键字

 abstract          assert          boolean          break          byte
 case             catch           char             class         const
 continue         default         do               double         else
 enum             extends         final           finally       float
 for               goto           if               implements     import
 instanceof       int             interface       long           native
 new               package         private         protected     public
 return           strictfp       short           static         super
 switch           synchronized   this             throw         throws
 transient         try             void             volatile       while

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

注意点

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

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

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

  • 标识符是大小写敏感的。

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

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

 public static void main(string[] args){
     String 王者荣耀="最强王者";
     System.out.println(王者荣耀);
 }
  • 可以使用中文名但不建议这样去使用,拼音也不建议使用。

数据类型

  • 强类型语言

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

  • 弱类型语言

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

Java数据类型分为两类

基本类型

数值类型
整数类型
  • byte占1个字节范围:-128~127

  • short占2个字节范围:-32768~32767

  • int占4个字节范围:-2147483648~2147483647

  • long占8个字节范围:-9223372036854775808~9223372036854775807

浮点类型
  • 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.14159265358979;
 
        //字符
        char name='中';//只能写一个字
        //字符串,String不是关键字,类
        //String namea="张三";
 
        //布尔值:是非
        boolean flag=true;
        //boolean flag=false;

引用类型

  • 接口

  • 数组

拓展

 public class demo03 {
    public static void main(String[] args) {
        //整数拓展     进制     二进制0b     十进制       八进制0       十六进制0x
 
        int i =10;
        int i2=010;//八进制0
        int i3=0x10;//十六进制0x   0~9 A~F(15)
 
        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);//false
 
        float d1 =21313131313f;
        float d2 =d1+1;
 
        System.out.println(d1==d2);//true
 
        //=================================================================
        //字符拓展
        //=================================================================
        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-65536   Excel 2的16次方=65536
        //U0000 UFFFF
 
        char c3 ='\u0061';
        System.out.println(c3);//a
 
        //转义字符
        // \t 制表符
        // \n 换行
        // .....
 
 
        System.out.println("Hello\nWorld");
 
        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 flag = true;
 
        if (flag==true){} //新手
        if (flag){}       //老手
        //Lsee is More!   代码要精简易读
 
    }
 }

 

类型转换

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

 

低------------------------------→高

byte , short , char → int → long → float → double

 

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

 

强制类型转换

自动类型转换

 

 public class Demo05 {
     public static void main(String[] args) {
         int i = 128;
         byte b = (byte)i;//内存溢出;(byte范围-128~127)
         //double b =i; 128.0
 
         //强制转换 (类型)变量名   高--低
         //自动转换               低--高
 
         System.out.println(i);
         System.out.println(b);
 
         /*
         注意点:
         1.不能对布尔值进行转换
         2.不能把对象类型转换为不相干的类型
         3.再把高容量转换到低容量的时候,强制转换
         4.转换的时候可能存在内存溢出,或者精度问题!
          */
 
 
         System.out.println("======================");
         System.out.println((int) 23.7);//23
         System.out.println((int) -45.89F);//-45
 
 
         System.out.println("======================");
         char c ='a';//a=97
         int d=c+1;
         System.out.println(d);//低到高,自动转换
         System.out.println((char)d);//高到低,强制转换
 
    }
 }

 

 public class demo06 {
     public static void main(String[] args) {
         //操作比较大的时候,注意溢出问题
         //JDK7新特性,数字之间可以用下划线分割,并且不会被输出
         int money=10_0000_0000;
         int years=20;
         int total=money*years;//-1474836480,计算时溢出
         long total2=money*years;//-1474836480,上面两个默认是int,转换之前已经存在问题?
 
         long total3=money*((long)years);
         /*
         20000000000,
         因为money*years计算后结果溢出,此时已经是错误的负数,
         再转换成long依旧是错误的,
         把其中一个转换为long之后再相乘结果就会自动转换(低到高)long
         */
 
         System.out.println(total3);
 
         // L 用大写来表示,小写l容易看成1
 
    }
 }

 

变量

 

 

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

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

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

 

 type varName [=value] [{,varName[=value]}];
 //数据类型 变量名 = 值;可以用逗号隔开来声明多个同类型变量。

 

注意事项

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

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

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

 

变量作用域

  • 类变量

  • 实例变量

  • 局部变量

 public class Variable{
    static int allClicks=0;//类变量
    String str="hello world";//实例变量(方法外面 类里面)
     
    public void method(){
    int i=0;//局部变量(在大括号中间有效)
    }
 }
 public class demo08 {
 
    //类变量 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);
 
        //变量类型 变量名字 = new demo08();
        demo08 demo08 = new demo08();
        System.out.println(demo08.age);
        System.out.println(demo08.name);
 
        //类变量 static
        System.out.println(salary);
    }
    //其他方法
    public void add(){
 
    }
 }

 

常量

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

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

final 常量名=值;
final double PI=3.14;

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

public class Demo09 {

//修饰符,不存在先后顺序
static final double PI=3.14;
//final static double PI=3.14;

public static void main(String[] args) {
System.out.println(PI);
}
}

 

 

变量的命名规范

  • 所有变量、方法、类名:见名知意

  • 类成员变量:首字母小写和驼峰原则:monthSalary;

    除了第一个单词以外,后面的单词首字母大写 lastName

  • 局部变量:首字母小写和驼峰原则

  • 常量:大写字母和下划线:MAX_VALUE

  • 类名:首字母大写和驼峰原则:Man,GoodMan

  • 方法名:首字母小写和驼峰原则:run(),runRun()

 

基本运算符

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

  • 算数运算符:+,-,*,/,%(模运算 求余),++(自增),--(自减)

  • 赋值运算符:=

  • 关系运算符:>,<,>=,<=,==,!=(不等于),instanceof

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

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

  • 条件运算符:?:

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

 package operator;
 
 public class Demo01 {
    public static void main(String[] args) {
        //二元运算符
        int a=10;
        int b=20;
        int c=25;
        int d=25;
 
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/(double)b);
    }
 }
 package operator;
 
 public class Demo02 {
    public static void main(String[] args) {
        long a=123123123123123L;
        int b=123;
        short c=10;
        byte d=8;
 
        System.out.println(a+b+c+d);//Long
        System.out.println(b+c+d);//Int
        System.out.println(c+d);//Int
    }
 }
 package operator;
 
 public class Demo03 {
    public static void main(String[] args) {
        //关系运算符返回的结果:正确,错误   布尔值
 
        int a=10;
        int b=20;
        int c=21;
 
        //取余,模运算
        System.out.println(c%a);// c/a 21/10 = 2·····1
 
        System.out.println(a>b);
        System.out.println(a<b);
        System.out.println(a==b);
        System.out.println(a!=b);
    }
 }

 

自增自减运算符、初识Math类

 package operator;
 
 public class Demo04 {
    public static void main(String[] args) {
        //++     --     自增,自减 一元运算符
        int a=3;
 
        int b=a++;//执行完这行代码后,先给b赋值,再自增
        //a=a+1;
        System.out.println(a);
        //a=a+1;
        int c=++a;//执行完这行代码前,先自增,再给c赋值
 
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
 
        //幂运算 2^3 2*2*2 = 8   很多运算,我们会使用一些工具类来操作
        double pow = Math.pow(3,2);
        System.out.println(pow);
    }
 }

 

逻辑运算符

 package operator;
 
 public class Demo05 {
    public static void main(String[] args) {
        //与(and)     或(or)     非(取反)
        boolean a=true;
        boolean b=false;
 
        System.out.println("a&&b:"+(a&&b));//逻辑与运算:两个变量都为真,结果才为true
        System.out.println("a||b:"+(a||b));//逻辑或运算:两个变量有一个真,结果才为true
        System.out.println("!(a&&b):"+!(a&&b));//如果是真,则变为假,如果是假则变为真
 
        //短路运算   前面为错后面不执行
        int c=5;
        boolean d=(c<4)&&(c++<10);
        System.out.println(d);
        System.out.println(c);
 
    }
 }

位运算符

 package operator;
 
 public class Demo06 {
    public static void main(String[] args) {
        /*
        A = 0011 1100
        B = 0000 1101
        -------------------------
        A&B 0000 1100  
        A|B 0011 1101
        A^B 0011 0001
        ~B 1111 0010
         
        面试题:怎么算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);
    }
 }

 

 

扩展运算符

 package operator;
 
 public class Demo07 {
    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);
 
        //字符串连接符   +   ,当左右出现String类型(字符串),就会把另外一个操作处都转换成String再进行连接
        System.out.println(a+b);
        System.out.println(""+a+b);//1020
        System.out.println(a+b+"");//30
    }
 }

 

三元运算

 package operator;
 
 //三元运算符
 public class Demo08 {
    public static void main(String[] args) {
        // x ? y : z
        //如果x==true,则结果为y,否则结果为z
 
        int score=50;
        String type =score<60?"不及格":"及格";//必须掌握
        // if
        System.out.println(type);
 
    }
 }

 

包机制

包的本质就是文件夹

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

包语句地语法格式为:

 package pkg1[.pkg2[.pkg3...]];

 

一般利用公司域名倒置作为包名; com.kuangstudy.www

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

 import package1[.package2...].(classname|*);
 //导入这个包下所有的类!
 
 import com.cheng.base.*;

 

JavaDoc

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

 

参数信息

  • @author 作者名

  • @version 版本号

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

  • @param 参数名

  • @return 返回值情况

  • @throws 异常抛出情况

 package com.cheng.base;
 
 /**
  * @author cheng
  * @version 1.0
  * @since 1.8
  */
 public class Doc {
 
    String name;//属性
 
 
    /**
      *
      * @param name
      * @return
      * @throws Exception
      */
    public String test(String name) throws Exception{
        return name;//方法
    }
     
    //通过命令行:javadoc 参数 Java文件
     
    //作业:学会查找使用IDEA生成JavaDoc文档!   面向百度编程!
    //答案:
    1.第一步:首先创建一个新的文件夹。
    2.第二步:选中所要生成的包。
    3.第三步:点击顶部Tools)菜单,并选择生成javadoc(Generate JavaDoc)这个选项。
    4.第四部:然后会弹出一个界面,然后在输出目录(Output directory )输入框后面的按钮点击进去选择我们刚才创建的文件夹(JavaDoc),然后在区域设置(locale框)里填写zh_CN,意思是这个代表的就是中文,输完之后在下面的其他命令行式参框(Other command line arguments:)中输入下面这行编码-encoding utf-8 -charset utf-8,意思是用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。
    5.点击确认
    6.我们打开JavaDoc文件夹,发现多了一堆东西,但我们只需要找到index.HTML文件,并打开之后就能看到生成的API文档了。
     
    //基础部分的一切知识,后面几乎每天都会用
 }
 
posted @ 2022-07-28 22:25  榔忼未成  阅读(75)  评论(0)    收藏  举报