Java基础语法

Java基础语法

注释


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

  2. 书写注释是一个非常号的习惯

  3. 注释的分类

    1. 单行注释 // 注释

    2. 多行注释 /* 注释 */

    3. 文档注释

      /**
      *
      */
      
  4. 平时写代码一定要注意规范。

标识符


  1. 关键字
  2. Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
  3. 标识符的规范
    • 标识符由字母(A-Z或者a-z),美元符($)、数字或者下划线(_)组成
    • 不能以数字开头
    • 不能使用关键字命名标识符
    • 标识符大小写敏感
    • 可以使用中文名,但是不建议这样去使用,也不建议使用拼音。
  4. 狂神原文标识符注意点
    1. 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始
    2. 首字符之后可以是字母、美元符、下划线或者数字的任何字符组合
    3. 不能使用关键字作为变量名或方法名
    4. 标识符是大小写敏感的
    5. 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音。

数据类型


  1. 强类型语言
    • 要求变量的使用严格符合规定,所有变量都必须先定义后才能使用
  2. 弱类型语言
    • VB
    • JS
  3. Java的数据类型分为两大类:基本类型和引用类型
  4. 基本数据类型
    1. 数值类型
      1. 整数类型
        1. byte占1个字节范围:-128~127
        2. short占2个字节范围:-32768~32767
        3. int占4个字节范围:-2147483648~2147483647
        4. long占8个字节范围:-923372036854775808~923372036854775807
      2. 浮点类型
        1. float占4个字节
        2. double占8个字节
      3. 字符类型char占2个字节
    2. boolean类型:占1位其值只有true(正确)和false(错误)两个
public class lesson1{
    public static void main(String[] args) {

        //八大基本数据类型
        int num1=10;    //最常用
        byte num2=1;
        short num3=30;
        long num4=50L;  //Long类型要在数字后面加L

		//小数:浮点数
        float num5=50.1F;   //float类型要在数字后面加个F
        double num6=3.1415926;
        //字符
        
        char name='A';
        //字符串String不是关键字,是类
        
        String name1="小雷熊";


        //布尔值
        boolean flag1 = true;
        boolean flag2 = false;
    }
}
  1. 引用数据类型

    1. 接口

    2. 数组

  2. 扩展

import java.sql.SQLOutput;

public class Lesson2 {
    public static void main(String[] args) {
        //整数拓展: 进制 二进制 十进制 八进制 十六进制
        /*
          二进制 0b开头
          八进制 0开头
          十进制
          十六进制 0x开头
         */
        int i = 10;
        int i2 = 010;//八进制
        int i3 = 0x10;//十六进制0x开头    0~9  A~F
        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println("========================================");
        //==============================================================
        //浮点数拓展 银行业务怎么表示?

        //BigDecimal 数学工具类
        //==============================================================
        // float    有限的 离散的 舍入误差    大约  接近但不等于
        //double

        //最好完全避免使用浮点数进行比较

        float f = 0.1f;
        double d = 1.0 / 10;
        System.out.println(f == d);   //返回了false
        System.out.println(f);
        System.out.println(d);

        float d1 = 213156116f;
        float d2 = d1 + 1;
        System.out.println(d1 == d2);   //返回了ture

        //==============================================================
        /*
        *字符拓展
        *
        * */
        //==============================================================

        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表 2字节 65536   最早的Excle   最多有2的十六次方=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);//false
        System.out.println("======我是分割线=====");
        String sc = "hello world";
        String sd = "hello world";
        System.out.println(sc==sd);//ture
        //对象 从内存分析

        //布尔值扩展
        boolean flag = true;
        if (flag==true){}   //这两行  新手程序员
        if (flag){}         //是一样的  老手程序员
        // less is More!代码要精简易读
    }
}

类型转换


低------------------------------------------------------------->高

byte,short,char->int->long->float->double

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

​ 格式:(类型)变量名

​ 作用:将高数据类型转换为低数据类型

​ 注意:使用强制类型转换时会造成精度的损失

public class Lesson3 {
    public static void main(String[] args) {

        int i=128;
        byte b=(byte)i;//内存溢出  采用了强制类型转换
        int j=128;
        double d=i;


//        强制类型转换 (类型)变量名    高-->低
//        自动类型转换                低-->高


        System.out.println(i);
        System.out.println(b);
        System.out.println(j);
        System.out.println(d);
        /*
        * 注意点
        * 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';
        int int_d = c+1;
        System.out.println(int_d);
        System.out.println((char)int_d);
    }
}
  1. 自动类型转换

常见问题

public class Lesson4 {
    public static void main(String[] args) {
        //操作比较大的数的时候,注意溢出问题
//        JDK7新特性,数字之间可以用下划线分割
        int money = 1000000000;
        int money_n = 10_0000_0000;
        int years = 20;
        int total =money*years;
        long total2=money*years;
        System.out.println(money);
        System.out.println(money_n);
        System.out.println(total);//-1474836480 计算的时候溢出了
        System.out.println(total2);//-1474836480    默认是int,转换之前已经存在问题了
        long total3 = money*((long)years);  //先把一个数转换为long,此时结果的类型为long类型而不是int类型了
        System.out.println(total3);//20000000000


        //L l   尽量采用大写的L
        //避免产生歧义
    }
}

变量


  1. 变量是可以改变的量

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

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

    type varName [=value] [{,varName[=value]}];
    //数据类型	变量名	=	值;可以使用逗号隔开来声明多个同类型变量。
    //不建议在同一行定义多个变量值这样看起来很麻烦。
    

注意事项:


  • 每个变量都有类型,类型可以是基本类型,也可以是引用类型
  • 变量名必须是合法的标识符。
  • 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。

变量作用域


  1. 类变量
    1. 需要加关键字static
    2. 写在类里面的
  2. 实例变量
    1. 写在类中间的
    2. 没有static关键字
  3. 局部变量
    1. 写在方法里面的
public class Variable{
    static int allClicks=0;		//类变量
    String str="Hello World";	//实例变量
    
    public void method(){
        int i=0;				//局部变量
    }
}
public class Lesson6 {

    //属性:变量

    //实例变量:从属于对象;如果不自行初始化,这个类型的默认值 0 0.0 u0000
    //布尔值:默认是false
    //除了基本类型,其余的默认值都是null;
    //null为空

    //类变量static
    static double salary=2500;

    String name;
    int age;

    //main方法 主程序方法
    static {

    }

    public static void main(String[] args) {


        //局部变量:必须声明和初始化值
        //在方法中定义的变量

        int i=10;
        System.out.println(i);
//      变量类型 变量名 =new Lesson6();
        Lesson6 lesson6=new Lesson6();
        System.out.println(lesson6.age);
        System.out.println(lesson6.name);

        //类变量 static关键字

        System.out.println(salary);
    }


    //其他方法
    public void add(){

    }
}

常量


  1. 初始化候不能再改变值!不会变动的值。
  2. 所谓常量可以理解成一种特殊的变量,他的值被设定候,再程序运行过程中不允许被改变。
  3. 关键字final
  4. 常量名一般使用大写字符。
//final 常量名=值;
final double PI=3.14;

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

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

变量命名规范


  • 所有变量、方法、类名:见名知意
  • 类成员变量:第一个单词首字母小写和驼峰原则(单词首字母大写):monthSalary 除了第一个单词以外,后面的单词首字母大写
  • 局部变量:首字母小写和驼峰原则
  • 常量:大写字母和下划线:MAX_VALUE
  • 类名:首字母大写和驼峰原则:Man,GoodMan
  • 方法名:首字母小写和驼峰原则:run(),runRun()

运算符


Java语言支持如下运算符:

  • 算数运算符:+,-,*,/,%,++,–
  • 赋值运算符=
  • 关系运算符:>,<,>=,<=,==,!= instanceof
  • 逻辑运算符:&&,||,!
  • 位运算符:&,|,^,~,>>,<<,>>>
  • 条件运算符 ? :
  • 扩展赋值运算符:+=,-=,*=,/=
package operator;

public class Demo01 {
    public static void main(String[] args) {
        //二元运算符
        //Ctrl+D:复制当前行到下一行;
        int a=10;
        int b=20;
        int c=30;
        int d=35;
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/b);

    }
}

自增,自减运算符

  • 自增运算符:++
  • 自减运算符:–
自增自减运算符的规则
//	++	--	自增,自减	一元运算符
int a;
int b;
a=1;
a++;	//等价于a=a+1;
++a;	//等价于a=a+1;
//虽然a++和++a本质上都是让a的值自增1;
//但是a++会先让a去参与运算,后对a的值进行自增操作;
//而++a会先让a的值进行自增操作,后让a去参与运算;
b=3;
b--;	//等价于b=b-1;
--b;	//等价于b=b-1;
//虽然b--和--b本质上都是让b的值自减1;
//但是b--会先让b去参与运算,后对b的值进行自减操作;
//而--b会先让b的值进行自减操作,后让b去参与运算;

//幂运算 2^3  2*2*2 == 8

//Math.pow(2,3);
double pow =Math.pow(2,3);
System.out.println(pow);

逻辑运算符和条件运算符

  • 逻辑运算符
    • 与(and),或(or),非(取反)
  • 逻辑与"&&“,逻辑或”||“,非”!"

逻辑与:逻辑与运算,两个变量都为真,结果才为true;即同真则真,一假则假

逻辑或:逻辑或运算,两个变量有一个为真,则结果才为true;即有真则真,同假则假

:如果原来为真,则运算过后为假。如果原来为假,则运算过后为真。

package operator;

public class Demo02 {
    public static void main(String[] args) {

        boolean a = true;
        boolean b = false;
        System.out.println("a&&b:"+(a&&b));  //逻辑与运算:同真则真,一假则假
        System.out.println("a||b:"+(a||b));  //逻辑或运算:一真则真,同假则假
        System.out.println("!(a&&b):"+!(a&&b));  //取反:原来为真,运算后为假;原来为假,运算后为真
//        + 运算符 负责将字符串和表达式或者变量连接起来的
    }
}

  • 短路运算
    • 逻辑与运算符:从左向右依次计算,如果左侧的表达式为false时则不会执行右侧的表达式。当左侧的表达式为true时,才会去看右侧的表达式为true还是false
    • 逻辑或运算符:从左向右依次计算,如果左侧的表达式为true时则不会去执行右侧的表达式。当左侧的表达式为false时,才会去看右侧的表达式为true还是false

位运算符

package operator;

public class Demo03 {
    public static void main(String[] args) {
        /*
        A = 0011 1100
        B = 0000 1101

        A&B 同1为1,有0则0
        A|B 有1为1,同0则0
        A^B 相同为0,不同为1
        ~B  原为0运算后为1,原为1运算后为0

        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 Demo04 {
    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 Demo05 {
    public static void main(String[] args) {

//        x?y:z
//        如果x==true,则结果为y,否则为z
        int score = 80;
        String type = score <60?"不及格":"及格"; //必须掌握
//        if
        System.out.println(type);
    }
}

运算符优先级

  • C语言当中的优先级:逗号运算符,赋值运算符,条件运算符,逻辑运算符,位运算符,关系运算符,移位运算符,算数运算符,单目运算符

  • Java当中的优先级:推荐多使用()

  • 类别操作符关联性
    后缀() [] . (点操作符)左到右
    一元expr++ expr–从左到右
    一元++expr --expr + - ~ !从右到左
    乘性* /%左到右
    加性+ -左到右
    移位>> >>> <<左到右
    关系> >= < <=左到右
    相等== !=左到右
    按位与左到右
    按位异或^左到右
    按位或|左到右
    逻辑与&&左到右
    逻辑或| |左到右
    条件?:从右到左
    赋值= + = - = * = / =%= >> = << =&= ^ = | =从右到左
    逗号左到右

包机制


简述


  • 包本质上就是一个文件夹

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

  • 包语句的语法格式为:

    • package pkg1[.pkg2[.pkg3..]];
      
  • 一般利用公司域名倒置作为包名;

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

    • import package1[.package2...].(classname|*);
      

注意点


  • 尽量不要让不同包下的不同类重名,否则当你想要导入该类时会报错

  • Java中有些已经定义好但是没有导入的,应用时一定先要导入包否则会报错

  • 当包下文件过多可以使用通配符"*"来导入,导入这个包下所有的类

JavaDoc

  • javadoc命令时用来 生成自己API文档的
  • 参数信息
    • @author 作者名
    • @version 版本号
    • @since 指明需要最早使用的jdk版本
    • @param 参数名
    • @return 返回情况
    • @throws 异常抛出情况
javadoc -encoding UTF-8 -charset UTF-8 Doc.java

面向百度编程!

基础部分的一切知识,后面几乎每天都会用

参考视频:B站-遇见狂神说

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值