java基础
注释(优美的注释让人心情愉悦)
-
单行注释
//我是酷酷的单行注释
-
多行注释
/* 我是美美的多行注释 */
-
JavaDoc:文档注释
/** *我是可以加参数的文档注释 *@Author */
标识符
关键字
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),美元($),或者下划线(_)或者数字任何字符组合
-
不能使用关键字作为变量名或者方法名。
-
标识符是大小写敏感的
-
可以使用中文或者拼音,但是不建议使用
数据类型
基本类型(primitive type)
//八大数据类型
//整数类型
byte num2=20;//(占1个字节范围-128·127)
short num3=30;//(占2个字节范围-32768·32767)
int num1=10;//(占4个字节范围-2147483648·2147483647)
long num4=30L;/*long数字后面加L,用于区分(占4个字节范 围-923372036854775808·923372036854775807)*/
//浮点类型-小数;浮点数
float num5 = 50.1F;//(占4个字节)
double num6 = 3.141592635897932385;//(占8个字节)
//字符类型
char name='a';//(占2个字节)
//字符串String 不是关键词,是类
//Sting name="王";
//boolean类型-布尔值 是非
//boolean flag = true;
boolean flag = false;
引用类型(reference type)
- 类
- 接口
- 数组
整数拓展:进制
- 二进制0b
- 十进制
- 八进制0
- 十六进制0x
int i=10;
int i2=010;//八进制0 输出8
int i3=0x10;//十六进制0x 输出16
浮点数拓展
银行业务,钱
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);//false
float f1 = 1212414141414f;
float f2 = f1+1;
System.out.println(f1==f2);//true
float 有限 离散 舍入差 大约 相近但不等于
银行怎么精确计算?
BigDecimal 数学工具类
字符拓展
char c1= 'a';
char c2= '中';
System.out.println(c1);
System.out.println((int)c1);//强制转换
System.out.println(c2);
System.out.println((int)c2);//强制转换
输出:
a
97
中
20013
所有字符还是数字
编码 Unicode 表:(A=65 , a=97) 2字节 0-65536 2的16方=65536
范围 U0000到UFFFF
-
转义字符
-
\t 制表符
-
\n 换行
-
\a 响铃
-
\b 退格
-
\f 换页
-
\r 回车
-
\v 垂直制表
-
\\ 反斜杠
-
? 问号字符
-
\’ 单引号字符
-
\" 双引号字符
-
\0 空字符
-
布尔值拓展
boolean flag = true;
if(flag==true){}//新手
if(flag){}//老手
//两者一致,但是要求精简易懂
类型转换
-
由于java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
低------------------------------------------------------------------------->高
byte , short , int , long , float , double
-
运算中,不同类型的数据先转化成同一类 ,然后在进行运算。
- 强制类型转换
- 自动类型转换
类型转换注意点
- 不能对布尔值进行转换
- 不能把对象类型转换成不相干的类型
- 在把高容量转化到底容量的时候,强制转化
- 转化的时候可能会出现内存溢出,或者精度问题!
//操作比较大的数据时候,注意溢出问题
//JDK新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money* years;//-1474836480,计算的时候溢出了
long total2=money* years;//-1474836480,计算的时候溢出了
//问题:先计算后转化long,解决方法,先把一个数转化成long
long total3 =money* (long)years;//200_0000_0000
System.out.println(total3);
//精度丢失,向下取整。
System.out.println((int)22.9);//22
System.out.println((int)-88.98F);//-88
char c = 'a';
int i=c+1;
System.out.println(i);//98
System.out.println((char) i);//b
变量
-
什么是变量:就是可以变化的量!
-
Java是一种强类型语言,每个变量都需要声明其类型。
-
Java变量是程序中最基本的储存单元,其要素包括变量名,变量类型和作用域。
type varName [=value] [{,varName[=value]}]; //数据类型 |变量名| =|值; 可以使用逗号隔开来声明多个类型变量。
注意事项
- 每个变量都有类型,类型可以是基本类型,也可以是引用数据类型。
- 变量名必须是合法的标识符。
- 变量声明是一条完整的语句, 因此每一个声明都必须以分号结束。
变量作用域
-
类变量
-
实例变量
-
局部变量
public class Demo04 { //类变量 static static double salary = 2500; //属性:变量 //实例变量:从属于对象;如果不自行初始化,这个类型的默认值 (int = 0 ,name = null) //布尔类型:默认是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); System.out.println(demo04.name); System.out.println(salary); } //其他方法 public void add() { } }
常量
-
常量(Constant):初始化(initialize)后不能再改变!不会变动的值。
-
所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序中运行过程中不允许被改变。
final 常量名=值; final double PI=3.14;
-
常量名一般使用大写字符
public class Demo05 {
//修饰符,不存在先后顺序(static静态的/final)
static final double PI = 3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
变量命名规范
- 所有变量、方法、类名:见名知其意
- 类成员变量:首字母小写和驼峰原则:monthSalary,除了第一个单词以外,后面的单词首字母大写
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则 :Man,GoodMan
- 方法名:首字母小写和驼峰原则
运算符
- Java语言支持的如下运算符:
- 算数运算符:+、-、*、/、%、++、–
- 赋值运算符: =
- 关系运算符:>、<、>=、<=、==、!=instanceof
- 逻辑运算符:&&、||、!
- 位运算符:&、|、^、>>、<<、>>>(了解!!!)
- 条件运算符:?:
- 扩展赋值运算符:+=、-=、*=、/=
幂运算
double pow = Math.pow(3,2);//3*3
System.out.println(pow);//9.0
位运算符
//位运算符
public static void main(String[] args) {
/*
A=0011 1100
B=0000 1101
A&B 0000 1100
A|B 0011 1101
A^B 0011 0001
~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<<1);//4
System.out.println(2<<2);//8
System.out.println(2<<3);//16
}
扩展赋值运算符:+=、-=、*=、/= 拼接运算符
public class Demo07 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
a+=b;//a=a+b
b-=c;//b=b-c
System.out.println(a);//30
System.out.println(b);//-10
//字符串连接符 + , 只要连接的有一个String,则拼接到一块输出String
System.out.println(a+b); //20
System.out.println(""+a+b);//30-10
System.out.println(a+b+"");//20
}
}
条件运算符(三元运算符):?:
//三元运算符
public class Demo08 {
public static void main(String[] args) {
//x?y:z
//如说x==true,则结果为y,否则为z
int score = 80;
String type =score <60?"不及格":"及格";
System.out.println(type);
}
}
包机制
-
为了更好的组织类,Java提供了包机制,用于区别类名的命名空间。
-
包语句的语法格式为:
package pkg1[.pkg2[.pkg3...]];
-
一般利用公司域名倒置作为包名;
-
为了能够使用某一个包的成员,我们需要再Java程序中明确导入该包,使用”impact“语句可完成此功能。
import package1[.package2...].(classname|*);
例如:
//导入这个包下所有的类 import com.wang.base.*;
JavaDoc
-
javadoc命令是用来生成自己的API文档的
javadoc -encoding UTF-8 -charset UTF-8 XXX.java
-
参数信息
- @author作者名
- @version版本号
- @since指明需要最早使用的jdk版本
- @param参数名
- @return返回值情况
- @throws异常抛出情况
package com.wfy.base;
/**
* @author wang
* @version 10
* @since 1.8
*/
public class Doc {
String name;
/**
* @author wang
* @param name
* @return
* @throws Exception
*/
public String text(String name)throws Exception{
return name;
}
}