Java基础语法
注释
注释并不会执行,是写给开发人员看的
多写注释,多学规范
java中的注释有三种:
-
单行注释://HelloWorld
-
多行注释:/* HelloWorld*/
-
文档注释: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';
//数据类型 变量名 = 值;可以用逗号隔开声明多个同类型变量,不建议写法,可读性差
注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量名必须是合法的标识符。
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
变量作用域
-
局部变量;位于方法体内
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