Java基础
示例:hello
public class hello{
public static void main(String[] ages){
System.out.println();
}
}
01注释
//单行注释
----------------------------
/* 多行注释
多行注释*/
----------------------------
/**
*文档注释
*/
02标识符和关键字
标识符
-
关键字
-
Java所有的组成部分都需要名字.类名,变量名以及方法名都被称为标识符.
标识符注意点
- 所有的标识符都应该以字母;美元符或者下划线开始
- 首字符之后可以是字母;美元符;下划线;数字的任何字符组合
- 不能使用关键字作为变量名或方法名.
- 标识符是大小写敏感的.
- 可以使用中文命名,但是不建议这样使用,也不建议使用拼音.
03数据类型
强类型语言
- **要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用.
弱类型语言
Java的数据类型分为两大类
- 基本数据类型(primitive type)
- 整数类型
byte占1个字节范围:-128
127 short占2个字节范围:-3276832767 int占4个字节范围:正负21亿 long占8个字节范围 - 浮点类型 float占4个字节 double占8个字节
- 字符类型char占2个字节
- boolean类型:占1位其值只有true和false两个
- 引用数据类型(reference type)
- 类
- 接口
- 数组
04数据类型扩展和面试题讲解
public class Demo02{
public static void main(String[] args) {
//整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
int i =10;
int ii =010;//八进制
int iii =0x10;//十六进制
System.out.println(i);
System.out.println(ii);
System.out.println(iii);
System.out.println("========================");
//======================================================
//浮点数拓展? 银行业务怎么表示?
//BigDecimal 数据类工具
//float 有限 离散 舍入误差 大约 接近但不等于
//double
//最好完全使用浮点数进行比较
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);
System.out.println(f);
System.out.println(d);
float a=5646431646f;
float z=a + 1;
System.out.println(a==z);
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);//强制转换
System.out.println("====================================");
//所有字符的本质还是数字
//编码 Unicode 表 2字节 0 - 65536 Excel 2 16 = 65536
// U0000 UFFFF
char c3 = '\u0061';
System.out.println(c3);
//转义字符
// \t 制表符
// \n 换行
System.out.println("h\nd");
System.out.println("h\td");
//布尔值扩展
boolean flag = true;
if (flag==true){}//新手
if (flag){}//老手
//代码要精简易读
}
}
05类型转化
-
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换.
-
运算中,不同类型的数据先转换成同一类型,然后进行运算.
-
强制类型转化
-
自动类型转换
public class Demo03 { public static void main(String[] args) { int i = 128; byte b = (byte)i;//内存溢出 //强制转换 (类型)变量名 高----低 //自动转换 低-----高 System.out.println(i); System.out.println(b); /* * 注意点: * 1.不能对布尔值进行转换 * 2.不能把对象类型转换成不相干的类型 * 3.在把高容量转换成低容量时,强制转换 * 4.转换的时候可能存在内存溢出,或者精度问题! * */ System.out.println("=================="); System.out.println((int)23.7); System.out.println((int)-45.89f); System.out.println("================================"); char c ='a'; int d = c+1; System.out.println(d); System.out.println((char)d); } }public class Demo04 { public static void main(String[] args) { //操作比较大的数的时候,注意溢出问题 //JDK特性,数字之间可以用下划线分割 int money = 10_0000_0000; System.out.println(money); int years = 20; int total = money*years;//计算溢出 long total2 = money*years;//默认是int,转换前就有问题 long total3 = money*(long)years;//先把一个数转换为long System.out.println(total3); } }
06变量;常量;作用域
-
变量就是可以变换的量.
-
Java是一种强类型语言,每个变量都必须声明其类型.
-
Java变量是程序中最基本的存储单元,其要素变量名,变量类型和作用域.
type varName [=value] [{,varName[=value]}]; //数据类型 变量名 = 值; 可以用逗号隔开来声明多个同类型变量 -
注意事项
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须有合法的标识符
- 变量声明是一条完整的语句,因此每个声明都必须以分号结束
变量作用域
-
类变量
-
实例变量
-
局部变量
public class Demo05 { //类变量 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 Demo05(); Demo05 demo05 = new Demo05(); System.out.println(demo05.age); System.out.println(demo05.name); //类变量 static System.out.println(salary); } //其他方法\ public void add(){ } }
常量
-
常量(Constant):初始化(initialize)后不能再改变值!不会变动的值
-
所谓常量可以理解成一种特殊的变量,他的值被设定后,在程序运行过程中不允许被改变.
-
常量名一般使用大写字符.
final 常量名=值; final double PI=31.4;
变量的命名规范
- 所有变量,方法,类名:见名知意
- 类成员变量:首字母小写和驼峰原则
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线
- 类名:首字母大写和驼峰原则
- 方法名:首字母小写和驼峰原则
07基本运算符
JAVA 语言支持如下预算符:
-
*算术运算符:+, -, , /, %(模运算), ++, --
-
赋值运算符:=
-
关系运算符:>, <, >=, <=, ==, !=instanceof
-
逻辑运算符:&&, ||, !
-
位运算符:&, |, ^, ~, >>, <<, >>>
-
条件运算符 ?, :
-
扩展赋值运算符:+=, -=, *=, /=
package operator;
import com.sun.javafx.css.CssError;
public class Demo01 {
public static void main(String[] args) {
// 二元运算符
int a = 10;
int b = 20;
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 Demo02 {
public static void main(String[] args) {
long a =456411561545564L;
int b = 321;
char c = 15;
byte d = 7;
System.out.println(a+b+c+d);//Long
System.out.println(b+c+d);//Int
System.out.println(c+(double)d);
}
}
package operator;
public class Demo03 {
public static void main(String[] args) {
// 关系运算符以boolean输出 false true
int a=10;
int b=21;
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
System.out.println(b%a);//模运算
}
}
08自增自减运算符;初始Math类
package operator;
public class Demo04 {
public static void main(String[] args) {
// ++:自增 --:自减 一元运算符
int a =3;
int b =a++;//执行完这行代码后,先赋值b,再自增
// a++ =a+1
System.out.println(a);
int c =++a;//执行完这行代码后,先自增,再赋值c
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂运算 2^3
double pow = Math.pow(2,3);
System.out.println(pow);
}
}
09逻辑运算符,位运算符,条件运算符
逻辑运算
package operator;
public class Dem05 {
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));//如果是真,结果为假;如果是假,结果为真
//短路运算
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 1100
A^B =0011 1101
~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<<3);
}
}
10三元运算符及小结
扩展赋值运算符
package operator;
public class Demo07 {
public static void main(String[] args) {
int a =10;
int b =20;
a+=b;//a = a+b
a-=b;//a = a-b
System.out.println(a);
//字符串连接符 +
System.out.println(a+b);
System.out.println(""+a+b);
System.out.println(a+b+"");
}
}
三元运算符
package operator;
//三元运算符
public class Demo08 {
public static void main(String[] args) {
// x ? y : z
//如果x==true,则结果为y;不是结果为z
int score = 60;
String type = score<80 ?"差":"优秀";//必须掌握
// if
System.out.println(type);
}
}
包机制
-
包机制相当于文件夹
-
为了能更好的组织类,Java提供了包机制,用于区别类名的命名空间
-
包语句语法格式
package pkg1[.pkg2[.pkg3...]]; -
一般利用公司域名倒置作为包名:
-
在Java程序中导入该包
import package1[.package2].(clsaaname|*);
JavaDoc生成文档
-
javadoc命令使用来生成自己的API文件
-
参数信息
-
@author 作者名
-
@version 版本号
-
@since 指明需要最早使用的JDK版本
-
@param 参数名
-
@return 返回值情况
-
@throws 异常抛出
package com.Jiyuhang.www.base; /** * @author Jiyuhang * @version 1.0 * @since 1.5 */ public class Doc { String name; /** * * @param name * @return * @throws Exception */ public String teat(String name) throws Exception{ return name; } }
-