Java基础语法
八大基本数据类型
整数
int num1 = 10;
byte num2 = 20;
short num3 = 30;
long num4 =30L; // Long类型要在数字后面加个L
浮点数(小数)
float num5 = 50.1F; // float类型要在数字后面加个F
double num6 = 3.14159265358979323;
字符
char name = 'A';
//字符串,string不是关键字,是类
//String name = "Kaneki";
布尔值
boolean flag = true;
//boolean flag = false;
基本数据类型拓展(重点)
整数拓展
//进制: 二进制0b 十进制 八进制0 十六进制0x
int i = 10;
int i2 = 010; //八进制0
int i3 = 0x10; //十六进制0x
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
浮点数拓展
-
例:银行业务怎么表示?钱
-
答:Bigdecimal 数学工具类
//float 有限 离散 舍入误差 大约 接近但不等于 //double //最好完全避免使用浮点数进行比较 //最好完全避免使用浮点数进行比较 //最好完全避免使用浮点数进行比较 float f = 0.1f; //0.1 double d = 1.0/10; //0.1 System.out.println(f==d);//flase float d1 = 2323232323232f; float d2 = d1 + 1; System.out.println(d1==d2);//true
字符拓展
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 ) 2字节 0-65536 Excel 2 16 = 65536
//U0000 UFFFF
char c3 = '\u0061';
System.out.println(c3); //a
//面试题目:
/* String sa = new String( original:"hello world");
String sb = new String( original:"hello world");
System.out.println(sa==sb); //flase
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd); //true
//对象 从内存分析 */
布尔值扩展
boolean flag = true;
if(flag==true){} //与下面一行一样
if(flag){}
补充
***Less is More ! 代码要精简易读 ***
//转义字符
// \t 横向跳到下一制表位置
// \n 回车换行
// \b 退格
// \r 回车
// \f 走纸换页
// \\ 反斜线符“\”
// \' 单引号符
// \" 双引号符
// \a 鸣铃
// \ddd 1~3位八进制数所代表的的字符
// \xhh 1~2位十六进制数所代表的的字符
System.out.println("Hello\tWorld!");
类型转换
//低--------------------高
//byte,short,char→int→long→float→double
//强制转换 (类型)变量名 高--低
//自动转换 低--高
int i = 128;
// byte b = (byte)i; //内存溢出
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);
1.不能对布尔值进行转换
2.不能把对象类型转换为不想干的类型
3.在把高容量转换到低容量的时候,强制转换
4.转换的时候可能存在内存溢出,或者精度问题
常见问题补充
操作比较大的数的时候,注意溢出问题
//JKD7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
System.out.println(money);
int years = 20;
int total = money*years; //-1474836480,计算的时候溢出了
long total2 = money*years; //默认是int,转换之前已经出问题了?
System.out.println(total);
//解决方法
long total3 = money*((long)years);
System.out.println(total3);
变量、常量、作用域
变量
//int a,b,c; //程序的可读性不好
int a=1;
int b=2;
int c=3;
String name = "Kaneki";
char x = 'X';
double pi = 3.14;
作用域
类变量,实例变量,局部变量
package XXXXX;
public class XXXXX {
//类变量 static
static double salary = 2500;
//属性:变量
//实例变量:从属于对象;如果不自行初始化,会变成这个类型的默认值 0 0.0 0000
//布尔值默认为 false
//除了基本类型其余的都是null
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量:必须声明和初始化值 只能在大括号里边用
int i=10;
System.out.println(i);
//变量类型 变量名字 = new com.kaneki.base.Demo08();
Demo08 demo08 = new Demo08();
System.out.println(demo08.age);
System.out.println(demo08.name);
//类变量 static
System.out.println(salary);
}
//其他方法
public void add(){
}
}
常量
//常量 final
//修饰符static和final,不存在先后顺序
static final double PI = 3.14;
public static void main(String[] args) {System.out.println(PI);}
变量的命名规范
1.所有变量、方法、类名:见名知意
2.类成员变量:首字母小写和驼峰原则:monthSalary 除了第一个单词以外,后面的
单词首字母大写 lastName
3.局部变量:首字母小写和驼峰原则
4.常量:大写字母和下划线:MAX_VALUE
5.类名:首字母大写和驼峰原则:Man,GoodMan
6.方法名:首字母小写和驼峰原则:run(),rumRun()
运算符
基本分类
- 算术运算符 +,-,*,/,%,++,–
- 赋值运算符 =
- 关系运算符>,<,>=,>=,==,!=,instanceof
- 逻辑运算符&&,||,!
- 位运算符:&,|,^,~,>>,<<,>>>(了解)
- 条件运算符?:
- 扩展赋值运算符+=,-=,*=,/=
PS:ctrl+D 复制当前行到下一行
基础运算符
以下需编写逐个学习
long a = 12121212121212121L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d); //long 运算中有long类型,结果是long类型
System.out.println(b+c+d);// int 如果运算有double类型,结果是double类型
System.out.println(c+d);//int
//++ -- 自增,自减 一元运算符
int a = 3;
int b = a++; //a++ a=a+1 执行完这行代码之后,再自增
System.out.println(a);
int c = ++a; //++a a=a+1 执行这行代码之前,先给a自增,再给c赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂运算 2^3 2*2*2=8 很多运算,我们用工具类来操作
double pow = Math.pow(2, 3);
System.out.println(pow);
// 与 或 非
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));
//短路运算
// b&&a 如果b直接为false ,则不执行&&a,这部分,直接判断为false
int c = 5;
boolean d = (c<4)&&(c++<4); //后边没执行,所以c还是5,不是6
System.out.println(d);
System.out.println(c);
位运算,面试题
public class XXX {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001 取反,异或,如果位相同则为0,否则为1
~B = 1111 0010
2*8=16 怎么计算最快
2*2*2*2 效率极高
<< 左移 *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<<4);
}
}
扩展赋值运算符
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);
条件运算符
//三元运算符,需要掌握
public class Demo08 {
public static void main(String[] args) {
// x?y:z
//如果x==true ,则结果为y,否则结果为z
int score = 50;
String type = score <60 ? "不及格":"及格";
System.out.println(type);
}
}
运算的优先级
包机制
-
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间
-
包语句的语法格式为:
package pkg1[. pkg2[. pkg3...]]
-
一般利用公司域名倒置作为包名 www.baidu.com → com.baidu.www
-
为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包,使用“import”语句可完成此功能
import package1[.package2...].(classname|*)
-
import com.xxx.xxx.*; //导入这个包下所有的类!
阿里巴巴开发手册
百度搜索阿里巴巴开发手册,有基础规范知识,下载后认真看完
JavaDoc
JavaAPI网址: JavaAPI
Javadoc命令是用来生成自己API文档的
package com.kaneki.base;
/*
* @author Kaneki
* @version 1.0
* @since 1.8
* */
public class Doc {
String name;
/**
* @author Kaneki
* @param name
* @return
* @throws Exception
*/
public String test(String name)throws Exception{
return name;
}
//可以写的有@author 作者名
//@version 版本号
//@since 指明需要最早使用的jdk版本
//@param 参数名
//@return 返回值情况
//@throws 异常抛出情况
//我是通过命令行 javadoc 参数 java.文件
//作业:学会查找使用IDEA生产JavaDoc文档 面向百度编程
//基础部分的一切知识,后面几乎每天都会用
}