Java基础语法

Java基础语法

注释

1.注释是当项目复杂的时候,用来给写代码的人看的,并不会执行的一串代码
2.写注释是一个非常好的习惯
3.注释有三种

  • 单行注释
//单行注释
  • 多行注释
/* 

多行注释

*/
  • 文档注释
/**
* @Descrioption HelloWorld
*@Author xiyuan
*/

4.有趣的代码注释

标识符和关键字

1.java所有的组成成分都需要名字,类名、 变量名以及方法名都被称之为标识符。

String teacher = "abc" ;

2.所有标识符必须由字母(A-Z或者a-z),美元符"$"),下划线“”开始命名
3.首字母之后可以是字母(A-Z或者a-z),美元符"$",下划线“
” 或者数字的任何字符组合
4.关键字不能作为标识符,关键字是Java自用有特殊意义的字母组合
4.命名举例 :

  • 合法标识符:age、$salary、_value、__1_value
  • 非法标识符:123abc、-salary

5.标识符是大小写敏感的
6.可以使用中文命名,但是一般不建议使用,也不建议使用拼音
7.常用命名规则注意事项:

  • 包名:全部小写,多级包使用”.“隔开例如:com.itzcl.www
  • 类和接口:首字母大写,第二个单词大写(大驼峰命名法),例如:HelloWorld
  • 方法或变量:第一个单词首字母小写,第二个单词首字母大写(小驼峰命名法),例如:testDemo
  • 常量:全部大写,和第二个单词之间使用”_“隔开,例如:TEST_DEMO

数据类型

1.强类型语言
- 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
- 安全性高,但是速度比较慢
2.弱类型语言
- 要求变量的使用可以不符合规定,所有变量都不需要先定义后才能使用

        String a = "hello" ;
        int num = 10;        
        System.out.println(a);        
        System.out.println(num);   

3.Java的数据类型分为两大类

  • 基本类型(primitive type)
    • 数值类型
      • 整数类型
        • byte占1个字节范围:-128~127
        • short占2个字节范围
          • int占4个字节范围
          • long占8个字节范围
      • 浮点类型
        • float占4个字节
        • double占8个字节
      • 字符类型
        • chair占2个字节
- boolean类型
- 占一个字节,值只有true和false两个
  • 引用类型(reference type)
    • 接口
    • 数组
        //八大基本数据类型 
        
         //整数 最常用int
        byte num1 = 10 ;//小于128 
        int num2 = 20 ;//小于21亿
        short num3 = 30;
        long num4 = 30L;//long类型结尾加上L
        
         //小数,浮点数        
        float num5 = 50.1F;//float类型结尾加上F
         double num6 = 3.141592653589793238462643 ;   
         
         //字符        
        char name = 'a';       
        
        //字符串,String不是关键字,类        
        String namea = "aa";     
        
        //布尔值:是非        
        boolean flag1 = true
        boolean flag2 = false;
  • 后缀字母要大写以防出现“l”看成“1”的情况

4.字节

  • 位(bit):计算机内部存储的最小单位,习惯性用小写字母“b”来表示,10011000是一个8位二进制数,
  • 字节(byte):计算机数据处理的基本单位,习惯用大写字母“B”来表示
  • 1B=8b
  • 字符:指计算机中使用的字母数字,字和符号
    5.进制
    二进制 0b开头
    八进制 0开头
    十进制
    十六进制 0x开头
        /*整数扩展 
        进制 
        二进制0b
        八进制 0开头 
        十六进制 0x
        */ 
        int i1 = 10;
        int i2 = 010;//八进制0 
        int i3 = 0x10;//十六进制0x  A~F
        System.out.println(i1);//10
        System.out.println(i2);//8
        System.out.println(i3);//16

6.浮点数拓展

  • 银行业务怎么表示? 钱?
    • 使用类 BigDecimal
- float是有限、离散,有舍入误差    大约,接近却不等于
- double
- **最好完全避免使用浮点数进行比较**
- **最好完全避免使用浮点数进行比较**
- **最好完全避免使用浮点数进行比较**
    float f = 0.1f;
    double d = 1.0/10
    System.out.println(f)
    ;System.out.println(d);
    System.out.println(f==d);//false
    float f1 = 46489789949f;
    float f2 = f1 + 1;
    System.out.println(f1 == f2);//ture

7.字符拓展

   char c1 = 'a';
   char c2 = '中';
   System.out.println(c1);//a
   System.out.println((int)c1);//97
   System.out.println(c2);//中
   System.out.println((int)c2);//20013
  • 所有的字符本质上都是数字
  • 编码问题  Unicode 2个字节    早些年最多65536个字符   EXcel以前最高2^16=65536 从U0000~UFFFF
    char c3 ='\u0061';
    System.out.println(c3);//a

8.转义字符

  • \t 制表符
  • \n 换行
System.out.println("Hello\tWorld");//Hello	World
System.out.println("Hello\nWorld");//Hello
                                                         //World

9.从内存分析
面向对象从内存分析

        String sa = new String("hello world");
        String sb = new String("hello world");
        System.out.println(sa);//hello world
        System.out.println(sb);//hello world
        System.out.println(sa==sb);//false
        String sc = "hello world";
        String sd = "hello world";
        System.out.println(sc);//hello world
        System.out.println(sd);//hello world
        System.out.println(sc==sd);//ture

10.布尔值拓展

  • 只有true和false
    boolean flag = true
    ;if(flag==true){
    }if(flag){}//less is more!

11.类型转换

  • java是强类型语言,所有有时候需要强制类型转换
  • 运算中要把不同类型的数据先转化为同一类型数据,然后进行运算
  • 强制转换 :(类型)变量名 高---低
char f= 'a';
int g= f+1;
System.out.println(f);//a
System.out.println((char)g);//b
int i = 128;
byte b =(byte)i;//内存溢出
System.out.println(i);//128
System.out.println(b);//-128
  • 自动转换:自动 低---高
int i = 128;
double b =(byte)i;//内存溢出
System.out.println(i);//128
System.out.println(b);//128.0
  • 注意点
    • 不能对 布尔值进行转换
    • 不能把对象类型转换为不相干的类型
    • 再把高容量类型转换为低容量的时候,强制转换
    • 转换的时候可能存在内存溢出,或者精度问题(高转低损失精度)
System.out.println((int)99.7);//99
System.out.println((int)-45.89f);//-45
//操作比较大的数时候,注意溢出问题
//jdk7新特性,数字之间可以用下滑线分割
int money = 1_000_000_000;
int years = 20;
int total = money*years;
long total2 = money*years;//默认是int,转换之前已经存在问题了
System.out.println(total);//-1474836480
System.out.println(total2);//-1474836480

long total3 = money*((long)years);//先把一个数提升为long
intSystem.out.println(total3);//20000000000

变量

1.变量就是可以变化的量,存储在内存中
2.Java是一种强类型语言每个变量都必须声明其类型
3.Java变相是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域

type varName [=value] [{,varName{=value]}];
// 数据类型 变量名=值 ; 可以使用逗号隔开赖生明多个同类型变量
  • 注意事项
    • 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
    • 变量名必须是合法的标识符
    • 变量声明是一条完整的语句, 因此每一个声明必须以分号结束
int a = 1;
int b = 2;
int c = 3;
String name = "aaaa";
char d = 'd';
double pi = 3.14;

5.变量作用域

  • 局部变量
    • 作用在一个方法内,必须声明和初始值
public class Demo08 {
//main方法
    public static void main(String[] args) {
        //局部变量
        int i =3;
        System.out.println(i);//3
    }
    //其他方法
    public void add(){
         System.out.println(i);//无法调用
    }
}
  • 实例变量
    • 在方法的外面,类的里面,从属于对象;
public class demo08 { 
    //实例变量:从属于对象,;如果不自行初始化,则为这个类型的默认值 数值类型0/0.0  字符串0000 布尔值 默认false 除了基本类型其余默认值都是null    
    String name;
    int age;
        public static void main(String[] args) {
        //变量类型 变量名字=
        Demo08  demo08 =new Demo08();
        System.out.println(demo08.age);//0
        System.out.println(demo08.name);//null
        }
    }
  • 类变量
    • 加一个关键字static
public class Demo08 { 
    static double salary = 2500;
        public static void main(String[] args) {
            System.out.println(salary);//2500.0
        }
    }

6.常量

  • 关键字final
  • 常量:初始化之后不能改变值,不会变动的值
  • 可以理解成特殊的变量,值被设定后,在程序运行中不允许改变
public class Demo09 {
//final 为修饰符不存在先后顺序
    static final double a = 3.14;
    final static double b = 3.14;
    public static void main(String[] args) {
        System.out.println(a);//3.14
        System.out.println(b);//3.14
     }
}

7.变量的命名规范

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

运算符

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

  • 赋值运算符:=

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

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

  • 位运算符:&,|,^,~,>>,<<,>>>

  • 条件运算符:? :

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

1.二元运算符

//二元运算符
//ctrl+d:复制当前行到下一行
int a = 10;
int b = 20;
int c = 30;
int d =40;
System.out.println(a+b);//30
System.out.println(ab);//-10
System.out.println(a*b);//200
System.out.println(a/(double)b);//0.5
System.out.println(a%b);//10

long a = 1234864844651651313L;
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((String)(c+d));//无法转换

//关系运算符返回的结果:   正确 错误      布尔值
//if
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

2.一元运算符

//++    --  自增  自减  一元运算符
//if循环
int a = 3;
System.out.println(a);//3
int b = a++;
System.out.println(a);//4
int c = ++a;
System.out.println(a);//5
System.out.println(b);//3
System.out.println(c);//5
//幂运算   2^3 2*2*2=8
double pow = Math.pow(2,3);
System.out.println(pow);//8.0
//很多运算会使用工具类来计算

3.逻辑运算符,位运算符

  • 与(and)      或(or)       非(取反)
boolean a =true;
boolean b = false;
//逻辑与运算:两个变量都为真,结果才为true
System.out.println(" a && b :"+(a&&b));//a && b :false
//逻辑或运算:两个变量又一个为真,结果为ture
System.out.println(" a || b :"+(a||b));//a || b :true
//逻辑取反:如果为真则变为假,反之亦然
System.out.println(" ! (a && b) :"+(!(a&&b)));//! (a && b) :true

  • 短路运算:与运算中前一项为假时后面程序不会执行
int c = 5
;boolean d = (c<4)&&(c++<4);
System.out.println(d);//false
System.out.println(c);//5
  • 位运算
    A = 0011 1100
    B = 0000 1101
    A&B 0000 1100
    A|B 0011 1101
    A^B 1100 0010
    ~B  1111 0010
/*
2*8=16
2*2*2*2
<<  左移  *2
>>  右移  /2
0000 0000   
00000 0001   1
0000 0010   2
0000 0011   3
0000 0100   4
0000 1000   8
0001 0000   16
*/


计算2*几最快方式就是把急进行位运算,左移或者右移

System.out.println(2<<3);//16

4.拓展赋值运算符

  • 拓展赋值运算符
int a = 10;
int b = 20;
a+=b;//a=a+b
System.out.println(a);//30
a-=b;//a=a-b
System.out.println(a);//10
  • 字符串连接符    +,将String类型之后的的所有东西全部转化为String类型
int a = 10;
int b = 20;
System.out.println(a+b);//30
System.out.println(""+a+b);//1020
System.out.println(a+b+"");//30

5.三元运算符

  • ?   :
  • x ? y : z
  • 如果x结果为ture则结果为y,否则结果为z
int score1 = 80;
int score2 = 50;
String type1 = score1<60 ?"不及格":"及格";
String type2 = score2<60 ?"不及格":"及格";
System.out.println(type1);//及格
System.out.println(type2);//不及格

6.优先级

  • 用括号

  • 为了更好的组织类,Java提供了包机制,用于区分类名的命名空间
  • 包语句的语法格式为:
package pkg1[. pkg2[pkg3...]];
  • 一般用公司域名倒置作为包名;
  • 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用“import”语句可以完成此功能
  • package 应在 import 前面
import package1[.package2[.package3...]].(classname|*);

JavaDoc

  • javadoc命令是用来生成自己APi文档的
  • 可以利用CMD中javadoc命令可以生成
  • IDEA生成javadoc文档
    • 在工具栏中找到tool,然后再子菜单中找到 Generate JavaDoc
    • 在生成文档上进行配置
  • 参数信息
    • @author 作者名
    • @verson 版本号
    • @since 指明需要最早使用的jdk号
    • @param 参数名
    • @return 返回值情况
    • @throws 异常抛出情况
package base;
/**
* @author xiyuan
* @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;
}
}

posted @ 2021-04-05 19:24  夕愿  阅读(70)  评论(0编辑  收藏  举报