public class Hello {
public static void main(String[] args) {
//单行注释
System.out.println("Hello,World!");
/*
多行注释
多行注释
*/
//JavaDoc:文档注释 /** */
/**
* Hello, world!
* @author Dong
*/
}
}
Java数据类型:
?Long类型要在数字后加L:long num=10L;
,l
和L
都可以标识长整型,但l
容易看成数字1,所以用L
比较规范。
?float类型要在数字后加F:float num=10.1F;
?字符串String不是关键字,是类
二进制:0b
开头
八进制:0
开头
十六进制:0x
开头
public class Demo1 {
public static void main(String[] args) {
int i=10;
int i_2=0b10;//二进制 0b 开头
int i_8=010;//八进制 0 开头
int i_16=0x10;//十六进制 0x 开头
System.out.println(i);
System.out.println(i_2);
System.out.println(i_8);
System.out.println(i_16);
}
}
银行业务中,钱怎么表示?
避免使用浮点数进行比较
浮点数是不精确的(有限的;离散的;有舍入误差的;大约;接近但不等于)
例子:
public class DataTypeDemo {
public static void main(String[] args)
//浮点数
float f=0.1f; //0.1
double d=1.0/10; //0.1
System.out.println(f==d);
//期望输出true,但实际输出false
float d1=1234424234523422342343421f;//这里数小了会输出false
float d2=d1+1;
System.out.println(d1==d2);
//期望输出false,但实际输出true
}
}
所以在遇到银行业务这类需要比较浮点数的情况,使用BigDecimal类(数学工具类)
?转义字符
?在进行运算前,需要先将不同类型的数据转换成统一的数据类型
?注意??
不能对布尔值进行转换
不能把对象类型转换为不相干的类型
在把高容量转换为低容量时,需要使用强制类型转换
转换时可能出现内存溢出问题和精度问题
字符型转换成整型时,转换成的是该字符的ascii码
数字字符转换成整型时,要用该字符-‘0’:int number=‘4’-‘0’
public class TypeConversion {
public static void main(String[] args) {
//强制转换 高-》低
int i=128;
byte b=(byte)i;
//内存溢出,byte存储范围[-128,127]
System.out.println(i);
System.out.println(b);//输出-128
System.out.println("======================================");
//======================================
//自动转换 低-》高
int ii=128;
double bb=ii;
System.out.println(ii);
System.out.println(bb);//输出128.0
System.out.println("======================================");
}
}
? 在进行数据的计算时,得到的数可能会出现溢出的问题。这时要先把进行计算的其中一个数转换为高容量的数据类型,然后在进行计算。
public class Overflow {
public static void main(String[] args) {
//操作比较大的数的时候,注意溢出问题
int money = 10_0000_0000;//JDK7新特性,数字之间可以用下划线分割
int year = 20;
int total = money * year;//输出一个负数,计算的时候溢出的
long totalLong = money * year;//先用原始的int类型计算完再转为long类型,所以转换之前已经出错
//正确做法是在计算前先把一个数的数据类型转化为long类,再计算乘法
long totalLongRight = money * ((long) year);
System.out.println("用int储存的:" + total);//输出-1474836480
System.out.println("用long储存但先计算的:" + totalLong);//输出-1474836480
System.out.println("用long储存且先类型转换的:" + totalLongRight);//输出期望结果20000000000
}
}
public class Scope {
//属性:变量
//类变量 static,可以不初始化
static double salary = 2500;
//实例变量:从属于对象,需要声明不需要初始化
// 实例变量不初始化的话,默认值为0 0.0
//布尔值默认是false
//除了基本类型,其余默认值都是null
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量:必须声明和初始化值,只在方法内有效
int i = 10;
Scope s = new Scope();
System.out.println(s.age);//age没有初始化,但可以输出,输出为0
System.out.println(salary);//类变量可以直接输出,输出2500
}
//其他方法
}
?常量被初始化后不能再改变值
?修饰符为final
(修饰符不去分前后)
?常量名一般全为大写
final 数据类型 常量名 = 值;
final double PI = 3.14;
对于long
、int
、short
和byte
:
long
int
,即使是short
和byte
类型的变量,运算结果也是inb=++a
和b=a++
:
++a
:先自增,再给b赋值a++
:先给b赋值,再自增幂运算:
短路运算:
?当根据逻辑运算符前面的表达式就可以得出逻辑运算的结果时,逻辑运算符后面的表达式不再执行。
int c=5;
boolean d=(c<4) && (c++<4);
System.out.println(d);//输出false
System.out.println(d);//输出5
?位运算效率高
面试题:2*8=16,怎样运算最快
? 答:用位运算最快
? 0000 0001 1
? 0000 0010 2
? 0000 0100 4
? 0000 1000 8
? 0001 0000 16
? 所以把2
左移3,就可以得到16
System.out.printlin(2<<3);//输出16
System.out.printlin(""+1+2);//12
System.out.printlin(1+2+"");//3,先进行加法运算,再与字符串连接
?包的本质就是文件夹
? 防止命名空间重复
?为了使用其他包的成员,需要在java程序中使用import导入改包(idea可以设置自动导入包),导入的其他包的方法名不能和程序中的方法名一样。
? .*为通配符,可以导入包下所有的类
? import java.util.*
? 将注释信息生成自己的帮助文档/API文档
使用文档注释 /** */
打开代码所在位置(mac:右键.java文件,点击Reveal in Finder)
打开命令行,cd到代码所在文件夹,运行:
javadoc -encoding UTF-8 -charset UTF-8 程序名.java
-encoding utf-8 -charset utf-8 为了能够显示中文
生成帮助文档
Tools --> Generate JavaDoc
参数:-encoding UTF-8 -charset UTF-8 -windowtitle “文档HTML页面标签的标题” -link http://docs.Oracle.com/javase/8/docs/api
原文:https://www.cnblogs.com/su-study/p/14656291.html