Java基础语法

注释

  • 平时编写代码比较少的时候,还是可以看懂自己写的,但是项目结构一旦复杂就需要用到注释。

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

  • 书写注释是一个非常好的习惯 BAT(百度阿里腾讯)

  • Java中的注释有三种:

    1. 单行注释://

    2. 多行注释:/ * 注释内容 * /

    3. 文档注释:/ * * 注释内容* / 可以设置一些参数,例如:@Description(描述)@Author(作者)

  • 平时写代码要注意注释规范

  • 有趣代码注释:百度

标识符

  • 关键字
abstractassertbooleanbreakbyte
casecatchcharclassconst
continuedefaultdodoubleelse
enumextendsfinalfinallyfloat
forgotoifimplementsimport
instanceofintinterfacelongnative
newpackageprivateprotectedpublic
returnstrictfpshortstaticsuper
switchsynchronizedthisthrowthrows
transienttryvoidvolatilewhile
  • Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。

标识符注意点

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

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

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

  • 标识符是大小写敏感的

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

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

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

数据类型

  • 强类型语言

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

  • 弱类型语言

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

    1. 基本类型(primitive type)

      基本数据类型: a.数值类型:1. 整数类型:①byte占1个字符范围:-128-127

      ​ ②short占2个字符范围:-32768-32767

      ​ ③int占4个字符范围:-2147483648-2147483647(最常用)

      ​ ④long占8个字节范围:-9223372036854775808-9223372036854775807( 写long会在字数后面加L)

      ​ 2. 浮点类型:①float占4个字节(float后面要加F)——float不是连续的,他不能表示范围内的所有数,float是有限、离散、舍入误差、大约、接近但不等于的

      ​ ②double占8个字节

      ​ ③浮点就是小数的意思,浮点数不能表示精确的数值,不能用于比较和表示货币,像银行这些一般用BigDecimal数学工具类表示,最好完全避免使用浮点数进行比较

      ​ 3.字符类型char占2个字节(字符用单引号,字符串用双引号,String不是关键字是类)

      ​ b. boolean类型(布尔值):占1位其值只有true(正确)和false(错误)两个

    2. 引用类型(reference type):①类②接口③数组

什么是字节

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

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

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

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

  • 1bit表示1位

  • 1Byte表示一个字节1B=8b

  • 1024B=1KB

  • 1024KB=1M

  • 1024M=1G

  • 1024G=1TB

数据类型扩展

  • 整数扩展、进制、二进制0b、十进制、八进制0、十六进制0x

  • 所有的字符本质还是数字

  • 编码Unicode :表 、 2个字节(65536)、是从U0000到UFFFF

  • 转义字符:\t制表符,\n换行

  • 输出里用号可以比较两个是否相等,只用一堆==可以当分割线

  • 布尔值扩展:if 可以用与if (xx=true正确的)

    boolean flag = true;

    if (flag==true){} //新手

    if (flag){} //老手

    //Less is More! 代码要精简易读

类型转换

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

​ 低-------------------------------------------------------------------高

​ byte,short,char—>int—>long—>float—>double

public class Demo01{
    public static Void main(String[]args){
        int i = 128;
        byte b = (byte)i;
        
        System.out.println(i);
        System.out.println(b);
    }
}
//运行结果i=128,b=-128,因为byte对应的类:Byte(大写B)里最大值127.这叫内存溢出
  • 运算中,不同类型的数据先转化为同一类型,然后进行运算。小数的优先级大于整数。

  • 强制类型转换

    强制转换:(类型)变量名。强制转化是从高到低

  • 自动类型转换

    从低到高

  • 注意点:

    1. 不能对布尔值进行转换
    2. 不能把对象类型转换为不相干的类型
    3. 在把高容量转换到低容量的时候,强制转换,反之自动转换
    4. 转换的时候可能存在内存溢出,或者精度问题
public class Demo02{
   public static Void main(String[]args){
       System.out.println((int)23.7);
       System.out.println((int)45.89f);
   }
}
//运行结果23和45会丢失小数点部分
  • JDK7新特性

    数字可以用下划线分割

    原本:int money = 1000000000;

    分割:int money = 10_0000_0000;

  • 问题展示

    public class Demo03{
        public static void main(String[]args){
            //操作比较大的数的时候,注意溢出问题
            //JDK新特性,数字可以用下划线分割
            int money = 10_0000_0000L;
            int years = 20;
            int total = money*years;//这样运行出来的是负数(-1474836480),计算的时候溢出了
            long tata12 = money*years;//这样运行出来的也是负数,因为默认是int,转换之前已经存在问题了
            long tata123 =money*((long)years);//先把一个数转换为long   
        }
    }
    

变量

  • 变量是什么:就是可以变换的量!(可以理解为一个空间,一个固定的空间,里面还不知道放了什么,例如你有个衣柜,有三个柜子,你给每个柜子起了一个名字)

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

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

    type varName [=value] [{,varName[=value]}];

    int a=1,b=2,c=3; //基本类型

    String name = “hello” //引用类型

    char X = ‘X’;

    double pi = 3.14;

    //变量类型 名字 = 值 ;

    //数据类型 变量名=值;可以使用逗号隔开来声明多个同类型变量。

    //不建议在一行里定义多个值,程序可读性。

  • 注意事项:

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

变量作用域

public class Demo{
    static int allClicks=0;   //类变量(需要加静态static关键词)
    string str = "hello world";   //实例变量(写在类中间)
    public void method(){
        int i = 0;   //局部变量(写在方法里面的)
    }
}
  • 类变量
  • 实例变量
  • 局部变量
public class Demo04{  //类
   //类变量:static
   static double salary = 2500//salary是工资的意思
    
   //属性:变量
    
   //实例变量:从属于对象(从属于这个类);如果不自行初始化,会变成这个类型的默认值(所有默认初始值基本都是0货0.0);
   //布尔值:默认是false;
   //除了基本类型。其余的默认值都是null(空的);  
   //main方法
   public ststic void main(String[]args){
       //局部变量;必须声明和初始化值,而且只在它的上下{}里有用
       int i;//这样不能输入要设置值
       int i = 10;
       
       //实例变量:变量类型 变量名字 = new Demo04();
       new Demo04 = new Demo04();
       
       //类变量:static
   }
}
//其他方法
public void add(){
    
}

常量

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

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

    final 常量名 = 值;

    final double PI = 3.14;

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

public class Demo05{
    static final double PT = 3.14//static final修饰符,不存在先后顺序
    public static void main(String[]arge){
    }
}

变量的命名规范

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

运算符

  • java语言支持如下运算符: 优先级()
    1. 算数运算符:+,-,*,/,%,++,–
    2. 赋值运算符=:例如 int a = 10就是把10赋值给a
    3. 关系运算符:>,<,>=,<=,==,!=,instanceof(==就是等于的意思,!=就是不等于)
    4. 逻辑运算符:&&,||,!(与或非)
    5. 位运算符:&,|,^,~,>>,<<,>>>(了解!!!)
    6. 条件运算符: ? , :
    7. 扩展赋值运算符:+=,-=,*=,/=

新建包:在idea里点击New—package(包的意思就是文件夹)

  • 算数运算符(不包括++、–)
package operator;  //不能删掉,就是表示是个包
public class Dmeo06 {
    public static void main(String[]arge){
        //二元运算符
        //Ctrl+D:复制当前行到下一行(idea快捷键)
        int a = 10;
        int a = 20;
        int a = 25;
        int a = 25;
        
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/b);//运行结果是0,实际0.5,被四舍五入了,所以需要强制转换,转其中一个为double
        System.out.println(a/(double)b);//运行结果正常
    }
}   
  • 赋值运算符
package operator; 
public class Dmeo07 {
    public static viod main(String[]args) {
        long a = 12312312312313L;
        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类型
        //如果两个操作或多个操作中有一个数为long,那么结果类型也为long
        //如果没有long,结果都为int类型,不论是不是有int类型
    }
}
  • 关系运算符
package operator; 
public class Dmeo08 {
     public static viod main(String[]args) {
         //关系运算符返回的结果:正确,错误  用布尔值表示,所以结果一定是个布尔值
         int a = 10;
         int b = 20;
         int c = 21;
         
         System.out.println(a>b);//运行结果:false(错误),这结果是对的
         System.out.println(a<b);//运行结果:true(正确),这结果是对的
         System.out.println(a==b);
         System.out.println(a!=b);
         System.out.println(c%a);//取余,模运算;计算过程:c/a    21/10=2.....1
     }
}
  • 算数运算符(里的++、–)
package operator; 
public class Dmeo09 {
     public static viod main(String[]args) {
         //++ --  自增,自减,一元运算符
         int a = 3;
         
         int b = a++;//执行完这行代码后,先给b赋值,再自增
         //a++  a=a+1;
         System.out.println(a);
         int c = ++a;//执行完这行代码后,先自增,再给c赋值
         
         //幂运算 2^3  2*2*2=8  很多运算会使用一些工具来操作!
         doule pow = Math.pow(3,2);
         System.out.println(pow);
     }
}
  • 逻辑运算符
package operator; 
public class Dmeo10 {
     public static viod 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++<4);//运行结果为5,c<4没有被执行是错的,所以后面的也不会执行
     }
}
  • 位运算符
package operator; 
public class Dmeo11 {
     public static viod main(String[]args) {
         /*
         和与或非的运算是一样的,但是它是单个的,所以叫位运算
         A = 0011 1100
         B = 0000 1101
         
         A&B :A与B 就是A与B每一位比较,例如上面的就是A的0011 1100和B的0000 1101每位对比,如果都是1就是1如果有一个是0都是0(结果0000 1100)
         A/B :A或B 也是对照比较,不同的是如果有一个是1就是1(0011 1101)
         A^B :A非B 对照比较,相同的就是0,不相同就是1(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);//运行结果16
     }
}
  • 条件运算符
package operator; 
public class Dmeo13 {
     public static viod main(String[]args) {
         //三元运算
         //X? y:z
         //如果x=true,则结果为y,否则结果为z
         //必须掌握
         
         int score = 80;
         String type = score <60 ?"不及格""及格";
         System.out.println(type);//执行结果:及格
         
         int score = 50;
         String type = score <60 ?"不及格""及格";
         System.out.println(type);//执行结果:不及格
     }
}
  • 扩展赋值运算符
package operator; 
public class Dmeo13 {
     public static viod main(String[]args) {
         int a = 10;
         int b = 20;
         
         a+=b;//a=a+b
         a-=b;//a=a-b
         
         System.out.println(a);
         
         //字符串连接符 + String
         System.out.println(a+b);//执行结果:30
         System.out.println(""a+b);//执行结果:1020,没有加起来只是连起来了。""是空的字符串的意思
         System.out.println(""a+b);//执行结果:30
         //+号运算符两侧出现字符串类型,就会把另外的或其他的都转化为字符串类型
         //注意字符串在运算的前面才会产生连起来,如果在后面,那么前面的依然会进行运算
     }
}

包机制

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

  • 包语句的语法格式为:

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

    package com.baidu.wwww;

  • 一般利用公司域名倒置作为包名:例如百度:com.baidu.www

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

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

    import com.baidu.wwww.Dema01;

    import com.baidu.wwww.*; //加个星可以导入该包下面所有类

    直接输入想导入的包名,idea会自动生成路径

    这类包要在package包的下面才可以用

  • 包的本质就是文件夹

  • 百度阿里巴巴开发手册,里面都是基础,可以多去看看

JavaDoc

  • javadoc命令是用来生成自己API文档的
  • 参数信息
    1. @author作者名
    2. @version版本号
    3. @since指明需要最早使用的jdk版本
    4. @param参数名
    5. @return返回值情况
    6. @throws异常抛出情况
  • 百度JDK帮助文档,然后进入Oracle官方网站下载

​ package com.hehe.wwww;

​ /**

​ *@author lala

​ *@version 1.0

​ *@since 1.8

​ */

​ public class Doc{

​ String name; //是一个属性

​ public String test(String name){

​ return name; //是一个方法

​ }

}

笔记视频连接

https://www.kuangstudy.com/course/play/1317504142650658818#1336560647022665729#1336560811632320514

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值