Java-3.基础知识
1 注释、标识符、关键字
注释:
单行“//”、多行"/* */"、文档JavaDoc
标识符:
- 首字母:“字母、$、_”
- 不能用关键字作为变量名或方法名
- 标识符是大小写敏感的
- 大小写可区分
2 数据类型
强类型语言
要求变量的使用要严格符合规定,需先定义后使用
弱类型语言
要求变量的使用要符合规定,需先定义后使用
Java分类
基本类型
\
字节
// Java数据类型-基本类型
public class Demo2 {
public static void main(String[] args) {
String a="10";
System.out.println(a);
// 整数(注意范围)
int num=10;
System.out.println(num);
byte num1=10;
System.out.println(num1);
short num2=10;
System.out.println(num2);
long num3=10L;
System.out.println(num3);
// 小数:浮点数
float num4=40.222F;
System.out.println(num4);
double num5=3.1314;
System.out.println(num5);
// 字符
char name='A';
System.out.println(name);
// 字符串,String不是关键字\类
String name1="AAA";
System.out.println(name1);
// 布尔值
boolean flag=true;
System.out.println(flag);
}
}
拓展
public class Demo03 {
public static void main(String[] args) {
// 整数拓展:进制[二0b/八0/十/十六0x]
System.out.println(0b10);
System.out.println(010);
System.out.println(11);
System.out.println(0x11);
System.out.println("------------------------");
// 浮点数拓展
// float:有限,离散,舍入误差,接近但不等于
// 最好完全使用浮点数进行比较->BigDecimal
float f1=0.1f;
double d1=1.0/10;
System.out.println(f1==d1);
float f2=11111f;
float f3=f2+1;
System.out.println(f2==f3);
System.out.println("------------------------");
// 字符拓展
char c1='a';
char c2='中';
System.out.println(c1);
System.out.println((int)c1);
System.out.println(c2);
System.out.println((int)c2);
// 编码Unicode:2字节,范围:0~65536[U0000-UFFFF]
System.out.println('\u0061');
System.out.println("------------------------");
// 转移字符
System.out.println("Hello World");
System.out.println("Hello\tWorld");
System.out.println("Hello\nWorld");
// 布尔值拓展
boolean flag = true;
if(flag==true){
System.out.println(flag);
}
// 同样形式->√
if(flag){
System.out.println(flag);
}
}
}
引用类型
3 类型转换
public class Demo04 {
public static void main(String[] args) {
// 强制转换:(类型)变量名
// 要求:高->低
// 自动转换:
// 要求:低->高
// byte,short,char-int-long-float-double
int i =127;
// byte最大值为127->超过:内存溢出
byte b = (byte)i;
System.out.println(i);
System.out.println(b);
System.out.println((double)i);
/*
注意点:
1. 不能把布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换到低容量的时候,强制转换
4.转换的时候可能存在内存溢出,或者精度问题
*/
System.out.println((int)2.34);
System.out.println((int)-34.2f);
System.out.println("------------------------");
char c='a';
int d=c+1;
System.out.println(d);
System.out.println((char)d);
System.out.println("------------------------");
// 溢出问题
// 数字之间可以用下划线分割
int money=10_0000_0000;
int years=20;
int total=money*years;
System.out.println(total);
long total1=money*years; // 默认int,后转换为long,转换之前已经存在类型
System.out.println(total1);
long total2=money*((long)years); // 先把一个数转换为long
System.out.println(total2);
}
}
4 变量、常量
变量
程序中最基本的存储单元,包括变量名、变量类型、作用域
变量作用域
public class Demo05 {
// 类变量 static
static double salary=2300;
// 属性:变量
// 实例变量:从属于对象,默认值为0/0.1/u0000/布尔值false//其他null
String name;
int age;
// main方法
public static void main(String[] args) {
// 局部变量:必须声明和初始化值
int a=1,b=2,c=3;
String name="nihao";
char x='x';
double pi=3.14;
// 变量类型 变量名字=new Demo08();
Demo05 demo05 = new Demo05();
System.out.println(demo05.age);
System.out.println(demo05.name);
// 类变量 static
System.out.println(salary);
}
// 其他方法
public void add(){}
}
常量
初始化后不能改变其值
格式:final 常量名(一般用大写字符)=值;
变量的命名规范
- 所有变量、方法、类名:可读性高
- 类成员变量:首字母小写&驼峰原则(第一个单词小写,后面单词首字母大写)
- 局部变量:首字母小写&驼峰原则
- 常量:大写字母&下划线
- 类名:首字母大写&驼峰原则
- 方法名:首字母小写&驼峰原则
5 运算符
算法运算符
+,-,*,/,%,++,–
package operator;
public class Demo01 {
public static void main(String[] args) {
// 二元运算符
int a = 10;
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/(double)b);
}
}
package operator;
public class Demo04 {
public static void main(String[] args) {
// 一元运算符:自增++,自减--
int a = 3;
int b = a++; // 先b=a,后a=a+1
System.out.println(b);
System.out.println(a);
int c = ++a; // 先a=a+1,后c=a
System.out.println(a);
System.out.println(c);
// 幂运算
double pow = Math.pow(2,3);
System.out.println(pow);
}
}
赋值运算符
=
package operator;
public class Demo02 {
public static void main(String[] args) {
long a = 111123123L;
int b = 123;
short c = 10;
byte d = 4;
// 类型转换:byte\short\char使用运算符后自动转型为int
System.out.println(a+b+c+d); // long
System.out.println(b+c+d); // int
System.out.println(c+d); // int
}
}
关系运算符
>,<,>=,<=,==,!=instanceof
package operator;
public class Demo03 {
public static void main(String[] args) {
// 关系运算符返回结果:true/false
int a = 10;
int b = 20;
int c = 11;
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
// 取余,模运算
System.out.println(c%a);
}
}
逻辑运算符
&&,||,!
package operator;
public class Demo05 {
public static void main(String[] args) {
// 与&&,或||,非!
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));
// 短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);
System.out.println(c);
}
}
位运算符
&,|,^,~,>>,<<,>>> (了解)
package operator;
public class Demo06 {
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
-----------------------------
位运算:左移>> 右移<<
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
2*8最快算法->2*2*2
*/
System.out.println(2<<3);
System.out.println(2>>3);
}
}
条件运算符
?, :
package operator;
public class Demo08 {
public static void main(String[] args) {
// 三元运算符 x ? y : z
// 如果x==true->结果为y,否则为z
int score = 80;
String type = score < 60 ? "false" : "true";
System.out.println(type);
}
}
拓展赋值运算符
+=,-=,*=,/=
package operator;
public class Demo07 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b;
System.out.println(a);
a-=b;
System.out.println(a);
a*=b;
System.out.println(a);
a/=b;
System.out.println(a);
// 字符串连接符+,String->将另一方转换成String进行连接
System.out.println(a+b);
// 注意先后顺序:计算or连接
System.out.println(""+a+b);
System.out.println(a+b+"");
}
}
6 包机制、JavaDoc
包机制
用于区别类名的命名空间
一般利用公司域名倒置作为包名
格式:(必须放置最顶部)
package pkg1[. pkg2[. pkg3...]];
使用包:
import package1[.package2..].(calssname|*)
通配符:* 导入包下所有的类
import com.kuang.base.*
JavaDoc
用来生成API文档
[API帮助文档](Overview (Java Platform SE 8 ) (oracle.com))
参数
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
package com.kuang.base;
/**
* @author Kuang
* @version 1.0
* @since 1.8
* */
public class Doc {
// 实例变量
String name;
// 方法
/**
*
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
}
通过命令行生成JavaDoc
javadoc -encoding UTF-8 -charset UTF-8 Doc.java