Java基础语法
目录
注释
-
Java中的注释有三种:
-
单行注释 //
-
多行注释 /**/
-
文档注释 /** */
-
标识符
-
关键字
abstract assert boolean break byte case catch char class const continue default do double else enum extends final finally** float for goto if implement import instanceof int interface long native new package private protected public return strictfp short static super switch synchronized this throw throws transient try void volatile while -
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称作标识符。
标识符注意点
-
所有标识符都应该以字母(A-Z或者a-z),美元符($)、下划线(_)开始
-
首字符之后可以是字母(A-Z或者a-z),美元符($)、下划线(_)或数字的任何字符组合
-
不能使用关键字作为变量名或方法名。
-
标识符是大小写敏感的
-
合法标识符举例:age、$salary、_1_value
-
非法标识符距离:123abc、-salary、#abc
-
可以使用中文命名,但是一般不推荐,也不建议使用拼音
数据类型
-
强制类型语言(安全性高、速度慢)
要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
-
弱类型语言(安全性低,速度快)
要求变量的使用要符合规定,所有变量都必须先定义后才能使用
-
Java的数据类型分为两大类
-
基本类型(primitive type)
-
数值类型
-
整数类型
-
byte占1个字节 范围:-128-127
-
short占2个字节 范围:-32768-32767
-
int占4个字节 范围:-2147483648-2147483647
-
long占8个字节 范围:-9223372036854775808-9223372036854775807
-
-
浮点类型
-
float占4个字节
-
double占8个字节
-
-
字符类型char占2个字节
-
-
boolean类型:占1位 其值只有true和false两种
public class DataType { public static void main(String[] args) { //八大数据类型 //整数 int num1=2147483647;//常用 byte mun2=127; short num3=32767; long num4=9223372036854775807L; //小数=浮点数 float num5=1.2f; double num6=3.1415926; //字符 char num='夏'; //布尔值 boolean flag=true; boolean flag1= false; } }
-
-
引用数据类型(reference type)
-
类
-
接口
-
数组
-
扩展
public class BaseSystem { public static void main(String[] args) { //整数扩展: 进制 二进制0b 八进制0 十进制 十六进制0x int a=0b10;//二进制 int j=010;//八进制 int i=10;//十进制 int x=0x10;//十六进制 0~9 A~F System.out.println(a); System.out.println(j); System.out.println(i); System.out.println(x); System.out.println("======================="); //浮点数扩展 银行业务---钱~~~~BigDecimal 数学工具类 //float 有限 离散 舍入误差 大约 接近但不相等 //double //最好不要完全使用浮点数进行比较 float f=0.1f;//0.1 double d=1.0/10;//0.1 System.out.println(f==d);//false System.out.println(f); System.out.println(d); float f1=123454254466f; float f2=f1+1; System.out.println(f1==f2);//当f1数值较小时加1后相比为false;当f1数值较大时加1后相比为true System.out.println("======================="); //字符扩展 char c1='a'; char c2 = '中'; char c3='张'; char c4='亮'; System.out.println(c1); System.out.println((int) c1);//强制转换 System.out.println(c2); System.out.println((int) c2);//强制转换 System.out.println(c3); System.out.println((int) c3);//强制转换 System.out.println(c4); System.out.println((int) c4);//强制转换 //所有字符本质还是数字 //编码 Unicode 表:97=a 65=A 2字节 0~65536 Excel 2 16=65536 //范围:U0000~UFFFF //转义字符 \t 制表符 \n 换行 ··· //深思 System.out.println("======================"); String sa =new String("HelloWord"); String sb = new String("HelloWord"); System.out.println(sa==sb);//false String sc ="HelloWord"; String sd ="HelloWord"; System.out.println(sc==sd);//true //对象 从内存分析 //布尔值扩展 boolean flag = true; if (flag==true) {}//新手 if (flag) {}//老手 //Less is More!代码要精简易读 } }
-
类型转换
-
由于Java是强制类型语言,所以要进行有些运算的时候,需要用到类型转换。
-
运算中,不同类型的数据先转化为同一类型,然后进行运算。
-
强制类型转换
-
自动类型转换
代码
public class TypeConversion {
public static void main(String[] args) {
//内存溢出
int o = 128;
byte b = (byte)o;
//强制转换 高~~>低(类型)变量名
//自动转换 低~~>高
System.out.println(o);
System.out.println(b);
/*
* 注意:
* 1.不能对Boolean进行转换
* 2.不能转换为不相干的类型
* 3.高容量转换到低容量,需强制转换
* 4.转换的时候可能出现内存溢出或精度丢失等问题
* */
System.out.println("==================");
//精度丢失
System.out.println((int)23.7);
System.out.println((int)-45.89f);
System.out.println("==================");
char c = 'g';
int d = c + 1;
System.out.println(d);
System.out.println((char)d);
//操作比较大的数时,注意溢出问题
//JDK7特性,数字之间可以使用下划线分割 _
System.out.println("==================");
int money = 10_0000_0000;
int years = 20;
int m = money * years;//-1474836480,计算结果溢出
long m1 = money * years;//默认是int,转换之前已经存在问题
long m2 = money * ((long)years);//先把一个数转换为long
System.out.println(money);
System.out.println(m);
System.out.println(m1);
System.out.println(m2);
//float类型最好使用大写L来注明
}
}
变量
-
变量是什么:就是可以变化的量!
-
Java是一种强制类型语言,每个变量都必须声明其类型。
-
Java变量时程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
注意事项:
-
每个变量都有类型,类型可以是基本类型,也可以是应用类型。
-
变量名必须是合法的标识符。
-
变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
代码
public class Variable {
public static void main(String[] args) {
//int a,b,c
//int a=1,b=2,c=4;//写程序注重程序的可读性,代码要简洁
String name = "ZL";
char x = 'X';
double pi = 3.1415;
}
}
变量作用域
-
类变量
-
实例变量
-
局部变量
代码
public class VariableScope {
//类变量 static (从属于类,伴随着类一起出现一起消失)
static double salary = 2500;
//属性:变量
//实例变量:从属于对象;如果不自行初始化,这个类型的默认值 (数值类型初始化值-->0或0.0)十六进制为u0000
//布尔值:默认值是false
//除了基本类型,其余的默认值都是null(空);
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量;必须声明并初始化值
int i = 0;
System.out.println(i);
//变量类型 变量名字 = new VariableScope();
VariableScope variablescope = new VariableScope();
System.out.println(variablescope.age);
System.out.println(variablescope.name);
//类变量 static
System.out.println(salary);
}
//其他方法
public void add(){
}
}
变量的命名规范
-
所有变量、方法、类名。见名知意
-
类成员变量:首字母小写和驼峰原则:monthSalary 除了第一个单词小写以外,后面的单词首字母大写,lastName
-
局部变量:首字母小写和驼峰原则
-
常量:大写字母和下划线:MAX_VALUE
-
类名:首字母大写驼峰原则:Many,GoodMan
-
方法名:首字母小写和驼峰原则:run(),runRun()
常量
-
常量(Constant):初始化(initialize)后不能改变值!不会变动的值。
-
所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
-
常量名一般使用大写字符。
package base;
public class Constant {
//修饰符,不存在先后顺序
static final double PI = 3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
运算符
Java支持以下运算符:优先级(一元运算符-->加减乘除-->we)
-
算术运算符:+,-,*,/,%,++,--
代码1
package operator;
public class Demo01 {
public static void main(String[] args) {
//二元运算符
//Ctrl + D :复制当前行到下一行
int a = 100;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b);
}
}
代码2
package operator;
public class Demo04 {
public static void main(String[] args) {
//++,-- 自增,自减 一元运算符
int a = 6;
int b = a++;//执行完这条代码后,先给b赋值,再自增;即 b=a;a = a+1
//a++ a = a+1;
System.out.println(a);
int c = ++a;//执行完这条代码后,先自增,再给c赋值
System.out.println(a+++b);
System.out.println(b);
System.out.println(c);
}
}
-
赋值运算符=
代码
package operator;
public class Demo02 {
public static void main(String[] args) {
long a = 321654987;
int b = 15;
short c = 8;
byte d = 3;
System.out.println(a+b-c+d);//long类型
System.out.println(b+c+d);//Int类型
System.out.println((double)(c+d));//Int类型 cast:转换
// 使用string强制类型转换可看到(c+d)为int类型
}
}
-
关系运算符:>,<,>=,<=,==,!= instanceof
代码
package operator;
public class Demo03 {
public static void main(String[] args) {
//关系运算符返回的结果:正确or错误 布尔值
//if
int a = 23;
int b = 24;
int c = 7;
//取余---模运算
System.out.println(c%b);
System.out.println(a<b);
System.out.println(a>b);
System.out.println(a==b);
System.out.println(a!=b);
}
}
-
逻辑运算符:&&,||,!
代码
package operator;
public class Demo05 {
public static void 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));//逻辑非运算:运算为真,结果为假,运算为假,结果才为true
//短路运算
int c = 5;
boolean d = (c<4)&&(c++>4);
System.out.println(d);
System.out.println(c);
}
}
-
位运算符:&,|,^,~,>>,<<,>>>(了解!!)
代码
package operator;
public class Demo06 {
/*
A = 0011 1100
B = 0000 1101
==================
A&B=0000 1100
A|B=0011 1101
A^B=0011 0001
~A =1100 0011
~B =1111 0010
2*8=16 2*2*2*2 ---计算机计算数值时将数值进行拆分
效率高!!!
<< *2
>> /2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0100 4
0000 1000 8
0001 0000 16
*/
}
-
条件运算符?:
代码
package operator;
//三元运算符
public class Demo08 {
public static void main(String[] args) {
//x ? y :z
//如果x==true,则结果为y,否则结果为z
int score = 99;
String type = score < 60 ?"不及格":"及格";//必须掌握
//if
System.out.println(type);
}
}
-
扩展赋值运算符:+=,-=,*=,/=
代码
包机制
-
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间(包的本质是文件夹)。
-
包语句的语法格式为:
package pkg1[.pkg2[.pkg3...]];
-
一般利用公司域名倒置作为包名:www.baidu.com com.baidu.www
-
为了能够使用某一个包的成员,我们需要在java程序中明确导入改包。使用”import“语句可完成此功能
import package1[.package2].(classname|*);
JavaDoc
-
javadoc命令是用来生成自己API文档的
-
参数信息
-
@author作者名
-
@version版本号
-
@since指明需要最早使用的jdk版本
-
@param参数名
-
@return返回值情况
-
@throws异常抛出情况
-
package com.practice.operator;
/**
* @author g'l
* @version 1.0
* @sinnce 1.8
*/
public class Doc {
String name;
/**
* @author g'l
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception {
return name;
}
//通过命令行,在.java文件目录下,使用cmd命令,输入javadoc 参数 java文件
//亦可使用idea产生javaDoc文件
}
附
什么是字节
-
位(bit):是计算机内部数据存储的最小单位,11001100是一个八位的二进制数
-
字节(byte):是计算机中数据处理的基本单位习惯用大写B表示
-
1B(byte,字节)=8bit(位)
-
字符:是指计算机中使用的字母、数字、字和符号
-
1bit=1位;1B(byte)=8b(bit);1024B=1KB;1024KB=1M;1024M=1G;1024G=1TB.