文章目录
1.注释
单行://
多行: /* 注释的内容 / 不能嵌套使用
文档: /* 注释的内容 */ 生成帮助文档。
JavaDoc注释:只能注释 类 ,类中的成员,接口
作用 :为了 javaDoc命令提供的注释。
// 关键字 定义类
// 单行注释
public class Demo1{
/**
是个主方法
aaa
xxx
hello
*/
public static void main(String[] args) {
/*
注释
多行注释
aaa
*/
System.out.println("hello"); // 简短的注释
}
}
格式:
/**
描述的信息
@author 解释说明文字作者
@version 版本号
*/
生成帮助文档的格式:
javadoc -d doc Demo2.java
javadoc -d doc -author -version Demo2.java
/**
这是一个示例类
@author 郭靖
@version 1.0 2012-2-3
*/
public class Demo2{
public static void main(String[] args) {
System.out.println("");
}
}
通常:
1.代码修改的地方;
2.代码不明确的地方;
3.复杂的算法;
4.自定义的类 ,接口
5.分支结构 ,循环结构
2.变量
2.1 什么是变量
变量概念: 一个存储空间,空间中的数据可以改变。只能存储一个数据。
2.2 内存存储
内存存储:
2.3 变量的声明和赋值
使用语法:
//1.
//声明变量
//数据类型 变量名
int age;
//给变量赋值
//运算符:赋值运算符
age = 22; // 初始化:开辟空间,赋初始值
age = 33; // 赋值
//把数据取出来,在控制台上展示
System .out.println(age);
//----------------------------------------
//2.
//边声明 边初始化
int age1 = 22;
//----------------------------------------
int n1;
int n2;
int n3;
n1 = 11;
n2 = 22;
n3 = 33;
//----------------------------------------
int n4,n5,n6;
n4 = 11;
n5 = 22;
n6 = 33;
//--------------------------------------------
int n7 = 11,n8 = 22;
2.4 命名规则
规范:小驼峰命名法。
多个单词组成,第一个单词首字母小写,后边 所有单词的首字母都大写。
myNum
myNumValue
num
.局部变量 必须 在初始化之后才能使用。
局部变量:在方法中定义的变量。(例如:main)
public static void main(String[] args) {
//强数据类型:
//局部变量
int age ;
age = 11;
System .out.println(age);
//int age = 22;
}
2.在同一个作用域内 ,不能 声明 同名的变量。
注意:
2.5 变量的注意事项
注意:
1.变量名有命名规则 和 规范。
规则:(标识符命名规则)
1)只能由 字母,数字,下划线_ ,$组成;
2.不能以数字开头;
3.不能是java的关键字;
4.不能是字面值 true,false,null.
3.Java关键字
goto,const 保留字
4.编程:2个数字相互交换:
//必须会
int num1 = 11;// num1 -> 22
int num2 = 22;// num2 -> 11
int temp;
temp = num1;
num1 = num2;
num2 = temp;
//-----------------------
System.out.println(num1);//22
System .out.println(num2);//11
5.数据类型:
基本数据类型:内置数据类型。
存:数值。
整数类型: 1,2,3
内存大小: 范围
字节数据类型: byte 1字节 -128 到 127
短整数类型: short 2
整数类型: int 4
长整数类型: long 8
System.out.println(Byte.MIN_VALUE);//-128
System .out.println(Byte.MAX_VALUE);//127
//--------------------------------
System .out.println(Float.MIN_VALUE);//1.4E-45
System .out.println(Float.MAX_VALUE);//3.4028235E38
浮点数: 1.5 6.7
单精度: float 4
双精度: double 8
字符: char 2
unicode 值 ‘a’ ‘3’ ‘中’ 0-65535
布尔: boolean true 真的,false假的
引用数据类型:存:地址。
字符串 : String
数组: []
类: class
接口: interface
字节:单位
1B字节 = 8位 bit 0,1
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
6.整数:
//一个整数的字面值,系统自动当作int类型处理
int n1 = 11;// 11 字面值,字面量,直接量 int 11 ->int
byte n2 = 22;
short n3 = 33;
long n4 = 44;// int -> long
long n5 = 44L;//后缀 :L 或 l long -> long
//数字过大,超出int的范围 ,是不会自动转换为long的
long n6 = 12345678987654321L;
//常用 int
int n7 = 11;//十进制
int n8 = 0B101;//0B 0b 二进制
int n9 = 017;//0 八进制
int n10 = 0x19;// 0X 或 0x 十六进制
//下划线分隔 增强可读性
int n11 = 0B1111_0000_1010_1010_1000;
7.浮点数
//一个小数的字面值,系统自动当作double处理
double n1 = 11.1; //double - > double
n1 = 22.2d;// D 或 d 表示数值是double
float n2 = 22.2f; //F 或 f float -> float
//------------科学计数法-----------------------------
double n3 = 2.0e3;// E 或 e :以 10 为底 2.0 * 10 的3次方
//十六进制(科学计数法)
double n4 = 0x5.0p30; // P 或 p:以 2 为底 5.0 * 2 的30次方
注意:
import java.math.BigDecimal; //导入 BigDecimal类型
public class Demo9 {
public static void main(String[] args) {
//1.不能在数量级别 相差很大 的数字之间进行运算
double n1 = 5.0e30 + 1;
//2.算不准
double num1 = 0.1;
double num2 = 0.2;
System.out.println(num1 + num2);
//0.30000000000000004
//了解:
BigDecimal m1 = new BigDecimal("0.1");
BigDecimal m2 = new BigDecimal("0.2");
System .out.println(m1.add(m2));
//0.3,调用了BigDecimal,可以进行精确运算
}
}
8.字符
char c = 'a';
c = '3';
c = '中';
System.out.println(c);
//中
ASCII : 128个 基本
ISO-8859-1 :256个 ,扩展 ASCII
GB2312 :简体中文
GBK : 中文
Unicode编码 : 65536
UTF-32
UTF-16
UTF-8
9.布尔
true :成立的,对的,正确的
false:不成立的,不对的,不正确的
boolean result = true;
result = false;
System.out.println(result);
10.字符串
引用数据类型
String s = “hello";
String s = "hello";
String name = "张三";
String str = s + name;//字符串的拼接 (连接)
System.out.println(str);// "hello张三"
//----------------注意----------------
System .out.println(5 + 6); // 11
System .out.println(5 + 6 + "hello"); // 11 + "hello" -> "11hello"
System .out.println("hello" + 5 + 6); // "hello5" + 6 -> "hello56"
11.编程:存储 饼干的信息
/**
练习:数据类型
存储 饼干的信息:品牌 ,重量,价格信息。
*/
public class Demo_exam13 {
public static void main(String[] args) {
String brand = "嘉士利";
int weight = 1000;
double price = 17.8;
//品牌是:嘉士利
System .out.println("品牌(brand):"+ brand);
System.out.println("重量(weight):"+weight);
System.out.println("价格(price):"+price);
}
}
12.类型转换
类型转换: 赋值的类型 与 声明的类型不一致。
前提: 类型兼容(赋值的类型 是 声明的类型 的子集)。
12.1 自动类型转换:
低类型 赋值 给 高 类型
(范围小的) -》 范围大的
(高类型 完全 包括 低类型的取值范围)
byte -> short -> int -> long -> float -> double
char -> int -> long -> float -> double
byte n = 11;
int num = n;// byte -> int
System .out.println(num);
char c1 = 'A'; //65
char c2 = 'B'; //66
System .out.println(c1 + c2);
12.2 强制类型转换
高类型 赋值给 低类型
用强制转换符 : (类型)
注意:信息会丢失
//int n = 263;// int -> int
//byte num = (byte)n;// int -> byte
int n = 7;
byte num = (byte)n;
System .out.println(num);
类型提升原则:
前提:运算时。
低类型 提升 为高类型运算,结果 采取 类型级别最高的类型 作为结果类型。
13.编程:数字加密:num * 5 + 5.85 结果为整数
/**
练习:类型转换和提升
数字加密:num * 5 + 5.85 结果为整数
*/
public class Demo_exam16 {
public static void main(String[] args) {
int num = 10;
// double
// double + double //类型提升原则
// int + double
// int * int + double
int result = (int)(num * 5 + 5.85);
//int reault1 = num * 5 + (int)5.85;
System .out.println(result);//55
}
}
14.运算符
14.1分类
功能: 算术 、关系、逻辑等
操作数的个数:一元,二元,三元
14.2 算术运算符 + - * / %
% :取余数 (取模)
/ :取整数
System .out.println( 5 + 2 );
System .out.println( 5 - 2 );
System .out.println( 5 * 2 );
//---------------除法------------------
// *除数 和被除数 都是整数,结果取整数部分。
System .out.println( 5 / 2 );// 2
System .out.println( 5 / 2.0 );//2.5
System .out.println( 5.0 / 2 );//2.5
System .out.println( 5.0 / 2.0 );//2.5
//System .out.println( 5 / 0 );//抛出异常
System .out.println( 5 / 0.0 ); //正Infinity
System .out.println( -5 / 0.0 );//负-Infinity
System .out.println( 0 / 0.0 );//NaN 非数字
//----------------取余数----------------------------------
System .out.println( 5 % 2 );//1
System .out.println( 5 % 2.0 );//1.0
System .out.println( 5 % -2);// 1
System .out.println( -5 % 2);//-1符号 与 被除数相同
15.编程:任意的三位数字反转
方法一:
/**
练习:算术运算符
任意的三位数字反转
*/
public class Demo_exam18 {
public static void main(String[] args) {
//1.计算-----------------------------
int days = 46;
int week = days / 7;
int day = days % 7;
System .out.println(week + "周,余" + day);
//2.反转-------------------------------
int num = 789;
int n1,n2,n3;
n1 = num % 10; // 4
n2 = num / 10 % 10; // 3
n3 = num / 10 / 10; //2 num / 100
int reverseNum = n1 * 100 + n2 * 10 + n3;
System .out.println(reverseNum);//987
}
}
方法二:
public class Demo4{
public static void main(String[] args){
int num = 234;
int n1 = num / 100; //2
int n2 = num - n1 * 100; //34
int n3 = n2 / 10; //3
int n4 = n2 - n3 * 10; //4
System.out.print(n4);
System.out.print(n3);
System.out.print(n1);
}
}
16.注意:
1.JAVA是强类型,变量和声明要求一致
2.同一个{}内不可使用同样的变量名
反之可以
3. 一个整数的字面值,系统会当作int的类型来处理
byte,short在小于他们的范围时,使用他们的类型
long在没有后缀时int会转换到long,有后缀则用long
数字多大超出int范围,是不会自动转换为long的
4.前缀表示进制,0b-二进制
0x/0X-十六进制,0-八进制
5.数字过长可用下划线4位或8位一分隔,增强可读性
下划线不可放在数字的开头和结尾和前缀以及小数
如0b1111_0101_1111_0000_1011
6.浮点数就是小数
后缀D/d表示数值是double类型
后缀F/f表示数值是Float类型
7.十六进制表示浮点数,可以用double
需要科学记数法表示,0x5.0p30
0x表示十六进制,p表示以二为底的多少次方,30为开方数,p/P为2
8.使用bigdecimal可以消除误差
9.char 0-65535(0-2的16次方-1)
10.byte有负数范围,所以char无法包括byte
11.任何一个数和10取余都可以得到最后一位
12.浮点型无法精确存储