java基础语法
注释
- 项目结构复杂时,需要进行相关注释,注释不会执行,是给自己和别人看的。
- 写注释是一个非常好的习惯
- 注释分为:单行注释(//),多行注释(/* 中间输入要注释的内容 /),文档注释(avaDoc:文档注释 /* */ 中间可以加参数)
- 修改注释的颜色:file->Settings->Editor->Color Scheme->java->line comment(也可修改其他) 右侧进行修改可以修改颜色字体背景等
标识符
关键字
abstract | assert | boolean | break | byte |
---|---|---|---|---|
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceiof | 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),$,或者下划线(_)开始
- 首字母之后可以是字母、数字、下划线、$组合
- 不能使用关键字作为变量名或方法名
- 标识符大小写敏感
- 可以使用中文命名,一般不建议这样使用,也可以使用拼音,一般也不建议使用
数据类型
基础知识
-
强类型语言:要求变量的使用严格符合规定,所有变量都必须先定义后才能使用
-
弱类型语言:弱类型语言也称为弱类型定义语言。与强类型定义相反。像vb,php,js等就属于弱类型语言
-
java的数据类型分为两大类
-
基本类型(primitive type)
- 数值类型
- 整数类型:byte占1个字节范围:-128127;short占2个字节范围:-3276832767;int占4个字节范围:-21474836482147483647;long占8个字节范围:-9223372036854775808923372036854775807
- 浮点类型:float占4个字节;double占8个字节
- 字符类型:char占2个字节
- boolean类型:占一位其值只有true和false两个
- 数值类型
-
引用类型(reference type):类、接口、数组
注意:对不同整数类型数据进行操作,有long类型返回long,否则返回int
-
-
注意点
- int最常用
- long类型要在数字后面加L
- float类型要在数字后面加F
- char类型中只存放一个字符
- String不是关键字,是类
-
数据类型扩展
-
整数扩展: 进制 二进制0b 十进制 八进制0 十六进制0x
int i = 10; int i2 = 010; int i3 = 0x0061; System.out.println(i); //十进制 System.out.println(i2); //八进制 System.out.println(i3); //十六进制
-
浮点数扩展:银行业务怎么表示?钱——利用BigDecimol 数学工具类
//float 有限 离散 舍入误差 大约 接近但不等于 //最好完全避免浮点数的比较 float f= 0.1f;//0.1 double d = 1.0/10;//0.1 System.out.println(f==d); //false float d1 = 212121545212122f; float d2 = d1+1; System.out.println(d1==d2);//true
-
字符扩展:所有的字符本质还是数字。 编码 Unicode 表:97=a 65=A 2字节 0 - 65536 。一般 U0000 - UFFFF
char c1 = 'a'; char c2 = '中'; System.out.println(c1); System.out.println((int)c1); System.out.println(c2); System.out.println((int)c2); //所有的字符本质还是数字 //编码 Unicode 表:97=a 65=A 2字节 0 - 65536 //U0000 - UFFFF char c3 = '\u0061'; System.out.println(c3);//a //转义字符:\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); System.out.println(b);
-
自动类型转换
int i1 = 128; double d = i1; //自动转换 低--->高 System.out.println(i1); System.out.println(d);
-
注意点:
-
不能对布尔值进行转换
-
不能把对象类型转化为不相干的类型
-
在把高容量转换到低容量的时候,强制转换
-
转换的时间可能存在内存溢出或者精度缺失
//精度缺失 System.out.println((int)23.7); //23 System.out.println((int)-45.7f); //-45 //字符与数字之间的转换 char c ='a'; int e =1+c; System.out.println(e); //98 System.out.println((char)e); //b
-
-
操作比较大的时候,注意溢出问题
//JDK新特性, 数字之间可以用下划线分割 int money = 10_0000_0000; int years = 20; int total = money*years; //-1474836480 ,计算得到时候溢出 long total1 = money*years; //默认是int,转换之前已经存在问题了? long total2 = money*((long)years); //先把一个数转换为long System.out.println(total2);
变量
-
变量是什么:就是可以变换的量!
-
Java是一种强类型语言,每个变量都必须声明其类型。
-
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
type varName [=value][{,varName[=value]}]; //数据类型 变量名 = 值;可以使用逗号隔开来声明多个类型变量。
-
注意事项
- 每个变量都有类型,类型可以是基本类型也可以是引用类型。
- 变量名必须是合法的标识符。
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
- 不提倡一行定义多个变量,为了提高程序的可读性
-
变量分为:局部变量、实例变量、类变量(static)
//类变量 static static double salary=2500; //实例变量:从属于对象;如果不自行初始化,这个类型的默认值0 、 0.0 //布尔值:默认false //除了基本类型,其余的默认值都是null; String name; int age; //main方法 public static void main(String[] args) { //局部变量:必须声明和初始化值 int i = 10; System.out.println(i); //变量类型 变量名字 = new Demo04(); Demo04 demo04 = new Demo04(); System.out.println(demo04.age); //类变量 static System.out.println(salary); } //其它方法 public void add(){ }
常量
-
常量:(Constant)初始化(initialize)后不能在改变值,不会动的值。
-
常量可以理解为特殊的变量,它的值被设定后,在程序运行过程中不允许改变。
final 常量名 = 值; final double PI = 3.14; //修饰符,不存在先后顺序 static final double PI = 3.14; == final static double PI = 3.14;
-
常量名一般用大写字符
变量的命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则: monthSalary
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则: Man,GoodMan
- 方法名:首字母小写和驼峰原则: run(),runRun0
运算符
-
算数运算符:+,-,*,/,%,++
//二元运算符 //Ctrl+D : 复制当前行到下一行 int a = 10; int b = 20; int c = 25; System.out.println(a+b); System.out.println(a-b); System.out.println(a*b); System.out.println(a/(double)b); //因为定义的都为整数结果出现小数需要进行强转 System.out.println(c%a);//取余数
//++ -- 自增 自减 一元运算符 int a = 3; int b = a++; //执行完这行代码后,先给b赋值,再自增 //a = a+1 System.out.println(a); //a = a+1 int c = ++a; //执行完这行代码后,先自增,再给c赋值 System.out.println(a); System.out.println(b); System.out.println(c); //幂运算 2^3 2*2*2 = 8 很多运算会使用工具类来操作 double pow = Math.pow(3,2); System.out.println(pow);
-
赋值运算符=
-
关系运算符:>,<,>=,<=,==,!=, instanceof
- 关系运算返回的结果: 正确,错误 布尔值
-
逻辑运算符: &&,|,!
//与(and) 或(or) 非(取反) boolean a = true; boolean b = false; System.out.println("a && b:"+(a&&b)); //同真为真否则为假 System.out.println("a || b:"+(a||b)); //同假为假否则为真 System.out.println("!(a && b):"+!(a&&b)); //真为假,假为真 //短路运算,通过前半部分就能确定真假后就不执行后半句
-
位运算符:&,|,^,~,>>,<<,>>>(了解!! ! )
/* 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 */
-
条件运算符?︰
// x ? y : z //如果x==true,则结果为y,否则结果为z int score = 50; String type = score <60?"不及格":"及格"; //十分常见 System.out.println(type);
-
扩展赋值运算符:+=,-=,*=,/=
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); System.out.println(a+b+"");//字符串前正常运算,字符串后拼接
包机制
- 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。本质是文件夹。
- 一般利用公司域名倒置作为包名
- 为了能使用包成员,我们需要在Java程序中明确导入该包,使用“import”语句
- 注意:package选在代码的最上方,导包快捷键Alt+F4,导入包下的所有类可以用*,建议学习阿里巴巴手册