Java基础语法

Java基础语法

注释

注释并不会执行,是写给开发人员看的

多写注释,多学规范

java中的注释有三种:

  1. 单行注释://HelloWorld

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

  3. 文档注释:JavaDoc

    /**

    *Hello

    *World

    */

标识符
Java关键字类别Java关键字关键字含义
访问控制private一种访问控制方式:私用模式,访问控制修饰符,可以应用于类、方法或字段(在类中声明的变量)
访问控制protected一种访问控制方式:保护模式,可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符
访问控制public一种访问控制方式:共用模式,可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。
类、方法和变量修饰符abstract表明类或者成员方法具有抽象属性,用于修改类或方法
类、方法和变量修饰符class声明一个类,用来声明新的Java类
类、方法和变量修饰符extends表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口
类、方法和变量修饰符final用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量
类、方法和变量修饰符implements表明一个类实现了给定的接口
类、方法和变量修饰符interface接口
类、方法和变量修饰符native用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的
类、方法和变量修饰符new用来创建新实例对象
类、方法和变量修饰符static表明具有静态属性
类、方法和变量修饰符strictfp用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范
类、方法和变量修饰符synchronized表明一段代码需要同步执行
类、方法和变量修饰符transient声明不用序列化的成员域
类、方法和变量修饰符volatile表明两个或者多个变量必须同步地发生变化
程序控制break提前跳出一个块
程序控制continue回到一个块的开始处
程序控制return从成员方法中返回数据
程序控制do用在do-while循环结构中
程序控制while用在循环结构中
程序控制if条件语句的引导词
程序控制else用在条件语句中,表明当条件不成立时的分支
程序控制for一种循环结构的引导词
程序控制instanceof用来测试一个对象是否是指定类型的实例对象
程序控制switch分支语句结构的引导词
程序控制case用在switch语句之中,表示其中的一个分支
程序控制default默认,例如:用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现
错误处理try尝试一个可能抛出异常的程序块
错误处理catch用在异常处理中,用来捕捉异常
错误处理throw抛出一个异常
错误处理throws声明在当前定义的成员方法中所有需要抛出的异常
包相关import表明要访问指定的类或包
包相关package
基本类型boolean基本数据类型之一,声明布尔类型的关键字
基本类型byte基本数据类型之一,字节类型
基本类型char基本数据类型之一,字符类型
基本类型double基本数据类型之一,双精度浮点数类型
基本类型float基本数据类型之一,单精度浮点数类型
基本类型int基本数据类型之一,整数类型
基本类型long基本数据类型之一,长整数类型
基本类型short基本数据类型之一,短整数类型
基本类型null空,表示无值,不能将null赋给原始类型(byte、short、int、long、char、float、double、boolean)变量
基本类型true真,boolean变量的两个合法值中的一个
基本类型false假,boolean变量的两个合法值之一
变量引用super表明当前对象的父类型的引用或者父类型的构造方法
变量引用this指向当前实例对象的引用,用于引用当前实例
变量引用void声明当前成员方法没有返回值,void可以用作方法的返回类型,以指示该方法不返回值
保留字goto保留关键字,没有具体含义
保留字const保留关键字,没有具体含义,是一个类型修饰符,使用const声明的对象不能更新

Java所有的组成部分都需要名字

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

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

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

标识符是大小写敏感的

数据类型

强类型语言

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

弱类型语言

可以随便定义变量,如vb,javascript

Java的数据类型分为两大类

  • 基本类型(primitive type)

    一位等于8个字节

    整数类型浮点类型字符类型boolean类型
    byte占1个字节占1位,其值只有true和false
    取值范围-128至127
    short占2个字节char占2个字节
    取值范围-32768至32767
    lnt占4个字节float占4个字节
    取值范围-2147483648至21473647
    long占8个字节double占8个字节
    取值范围-9223372036854775808至9223372036854775807

    定义方法:值类型 值名称(变量名) = 值

    long类型要在数字后加L

    float类型要在数字后面加F

    char只能包含一个字或字符

    强类型语言很注重规范

  • 引用类型(reference type)

    ​ 类: String,Byte

    ​ 接口

    ​ 数组

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

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

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

    字符是指计算机中使用的字母,数字,字和符合

    1bit表示1位

    1Byte表示一个字节1B=8b(位)

    1024B=1KB

    1024KB=1M

    1024M=1G

    电脑32位和64位的区别

    32位内存条最多只能扩到4g而64位理论上是可以无限扩大的

整数扩展

int i = 10;

int i2 = 010;//八进制0

int i3 = 0X10;//十六进制0x

浮点型扩展

float d1 = 222121133311f;

float d2 = d1+1;

System.out.println(d1==d2);//true

float能表示的字长是有限的,也是离散的,会舍入误差,大约,接近但不等于

银行业务怎么表示?钱

BigDecimal 数学工具栏

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

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

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

字符类扩展

char c1 = ‘a’;

char c2 = ‘中’;

System.out.println((int)c1,(int)c2);

//所有字符本质还是数字

//编码 Unicode 2字节 长度 0 - 65536

char c3 = ‘\u0061’;//a

表示Unicode中 0061代表的字符

\u为转义字符

\t 空格

\n换行

布尔值扩展

boolean flag = true;

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

类型转换

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

从低到高分别为

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

小数优先级大于整数

int i = 128;

byte b = (byte)i;

System.out.println(i+" "+b);//i=128 b=-128;

//强转 (类型)变量名 高–>低

//自动转 低–>高,如int,转为double直接转即可

//内存溢出

/*
注意点:
1.不能对boolean(布尔值)进行转换
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(c);//a
System.out.println(d);//98 Unicode中97为a 98为b
System.out.println((char)d);//b

//操作比较大的数的时候,注意内存溢出

//JDK7新特性,数字之间可以用下划线分割

int money = 10_0000_0000;
System.out.println(money);//100000000
int years = 20;
int total = money*years;//-1474836480,内存溢出导致
long total2 = money*years;//先默认为int进行计算然后再强转为long所以结果还是-1474836480
long total2 = (long)money*years;//2000000000
long total2 = money*((long)years);//2000000000

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

变量

变量就是可以变化的量。

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

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

就行方程中的x,y,具有不确定值(未赋值)

变量就相当于一块空间,里面要放什么东西由自己定义

如:

int x=1;
String a=“hello”;
boolean b = true;
char c='a';
//数据类型 变量名 = 值;可以用逗号隔开声明多个同类型变量,不建议写法,可读性差

注意事项:

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

变量作用域

  • 局部变量;位于方法体内

    public class Hello{
        //类变量,变量类型前加staric
        static double salary = 2500;
        //属性:变量
        //实例变量:从属于对象;
        //如果不自行初始化,默认为0,0.0
       	//布尔值:默认是false
        //除了基本类型,其余默认值都是null
        String name;
        int age;
    	public static void main(String[] args){
    		//局部变量,只能作用与方法内
    		int i = 0;
    		Hellp.name = "张三";
    	}
    }
    
常量

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

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

//final 数据类型 常量名 = 值;
final double PI = 3.14;
//常量名一般使用大写字符
//修饰符,不存在先后顺序
static final double PI2 = 3.1415926;

变量名的命名规范

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

Java语言支持如下运算符:

  • 算数运算符:+,-,*,/,%,++,–

    • %:5/2=2…1取余数 5%2=1
    • ++(+1的意思) :i = 10++;//i=11
      • int a = 10++;//因为++的位置问题,先赋值再++,所以结果为10;
      • int b = ++a;//同样因为++位置问题,再加上上方赋值后再++为4,此语句++放在前面会先++再赋值,所以b结果为5
    • –(-1的意思) :i=10–;//i=9
  • 赋值运算符:=

    • 赋予变量值 a = 10;
  • 关系运算符:>,<,>=,<=,==,!=instanceof

    • 大于等于(>=):boolean b = 10>=1;//true

    • 小于等于(<=):boolean b = 10<=1;//false

    • ==:相当于数学中的=

    • 不等于(!=):String a = 10!=10?“是”:“否”; //否

    • instanceof:它的作用是测试它左边的对象是否是它右边的类的实例(后面会说,现在了解即可)

      import java.util.ArrayList;
      import java.util.Vector;
       
      public class Main {
       
      public static void main(String[] args) {
         Object testObject = new ArrayList();
            displayObjectClass(testObject);
         }
         public static void displayObjectClass(Object o) {
            if (o instanceof Vector)
            System.out.println("对象是 java.util.Vector 类的实例");
            else if (o instanceof ArrayList)
            System.out.println("对象是 java.util.ArrayList 类的实例");
            else
            System.out.println("对象是 " + o.getClass() + " 类的实例");
         }
      }
      
  • 逻辑运算符:&&,||,!(与或非)

    低于int类型的进行运算会自动转为int,即使没有int参与运算

    • &&:与,并且的意思

    • ||:或,或者的意思

    • !:非,取反的意思

      • boolean a = true;
        boolean b = false;
        System.out.println(a&&b);//false
        System.out.println(a||b);//true
        System.out.println(!(a&&b));//原false取反为true
        
  • 位运算符:&,|,^,~,>>,<<,>>>(了解!!!)(运算符operator)

    • A = 0011 1100;
      B = 0000 1101;
      A&B = 0000 1100;//将每一位各自进行运算,即:两个都为1才为1,否则为0
      A|B = 0011 1101;//将每一位各自进行运算,即:都为0即为0,否则为1
      A^B = 0011 0001;//将每一位各自进行运算,即:相同为0,不同为1
      ~B = 1111 0010//将每一位各自进行运算,即:每一位进行取反
      
    • 左移(>>):*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<<2);//8 即:2*2*2
      System.out.println(2<<3);//16 即:2*2*2*2
      System.out.println(8>>2);//2 即:8/2/2
      
  • 条件运算符:?:

    • 三目运算符,如:

      String a = 10!=10?"是":"否";//如果10!=10为true则输出"是"为false则输出否
      //条件语句 ? "ture输出值":"false输出值"
      
  • 扩展赋值运算符:+=,-=,*=,/=

    int a = 10;
    int b = 5;
    b += a;//15 即:a,b相加后赋值
    b -= a;//15 即:a,b相减后赋值
    b *= a;//15 即:a,b相乘后赋值
    b /= a;//15 即:a,b相除后赋值
    

    注意事项:

    int a = 10;
    int b = 5;
    System.out.println(""+a+b);//会先转成字符串再串联起来,所以结果为:105
    System.out.println(a+b+"");//会先运算再串联起来,所以结果为:15
    

    优先级列表:

    优先级运算符结合性
    1()、[]、{}从左向右
    2!、+、-、~、++、–从右向左
    3*、/、%从左向右
    4+、-从左向右
    5«、»、>>>从左向右
    6<、<=、>、>=、instanceof从左向右
    7==、!=从左向右
    8&从左向右
    9^从左向右
    10|从左向右
    11&&从左向右
    12||从左向右
    13?:从右向左
    14=、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>=从右向左
包机制

包的本质就是文件夹

一般用公司域名倒置作为包名:如com.baidu.www.

存放于包中要在最上方添加package+包名,如:main文件位于com.baidu.www则在main文件最上方添加 package com.baidu.www;

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

import java.util.Data;//导入util包下的Data类

import java.util.*;//导入util包下所有类

JavaDoc

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

参数信息:

  • @author 作者名
  • @version 版本号
  • @since 指明需要最早使用的jdk版本
  • @param 参数名
  • @return 返回值情况
  • @throws 异常抛出情况

打开cmd输入javadoc

参数:

-encoding UTF-8 编码为UTF-8

-charset UTF-8 字符编码UTF-8

javadoc (-encoding UTF-8 -charset UTF-8) 文件名.java

基础知识必须掌握

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值