JAVA学习笔记01
public class Hello {
public static void main(String[] args) {
System.out.println("Hello,Word!");
}
}
?
注意不要使用中文符号,主函数语句main+回车,输出语句sout+回车。
注释
书写注释非常重要!!!
单行注释
//某一行
多行注释
/*
第一行
....
很多行
*/
标识符和关键字
关键字不能被用来起名,如public class class这是错误的。
类名,变量名,方法名都成为标识符。
标识符只能以字母、$、_ 开头。
标识符对大小写十分敏感,Man和man不一样。
标识符命名尽量不使用拼音。
数据类型
基本类型
public class Demo2 {
public static void main(String[] args) {
//整型
int num1 = 10;//最常用
byte num2 = 20;
short num3 = 132;
long num4 = 12123211546L;//long类型后会加一个L
?
//浮点型
float num5 = 11.2F;//float类型会在后面加一个F
double num6 = 12.54;
?
//字符型
char a = '我';//只能是一个字符
?
//字符串,String不是关键字
String name = "张三";
?
//布尔型 是非
boolean flag = true;
//boolean flag = false;
}
}
引用数据类型
数据类型拓展
尽量避免浮点数之间的比较!!!
浮点数显示是有限的,大约,近似于,四舍五入,接近但不等于。
银行业务不适用浮点型,会使用Java自带的一个数学工具类BigDecimal。
public class Demo3 {
public static void main(String[] args) {
float d = 0.1f;
double b = 1.0/10;
System.out.println(d==b);//false
?
float a = 1513543468768451434f;
double c = a+1;
System.out.println(a==c);//true
}
}
?
转义字符
(类型)变量名
public class Demo4 {
public static void main(String[] args) {
double i = 5.2547;
int d = (int)i;//强制转换为int型
System.out.println(i);
System.out.println(d);
}
}
?
注意
-
不能对布尔类型进行强制转换
-
不能把对象类型转换为不相干的类型
-
从高容量转换到低容量的时候,强制转换
-
转换的时候可能存在内存溢出或者精度问题
ASCII转换
public class Demo4 {
public static void main(String[] args) {
char a = 'a';
int c = a+1;
System.out.println(c);
System.out.println((char)c);
}
}
/*
98
b
*/
数值溢出问题
public class Demo5 {
public static void main(String[] args) {
//操作比较大的数的时候,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money * years; //-1474836480 ,计算的时候溢出了
long total2 = money * years;//默认是int,转换之前已经存在问题了?
long total3 = money * ((long) years);// 先把一个数转换为Long
System.out.println(total3);//20000000000
}
}
?
先将一个数值转化为long类型再进行计算。
-
变量就是可以变化的量。
-
java是一种强类型语言,每个变量必须声明其类型。
-
java变量是程序中最基本的存储单元,其要素包括变量名,变量类型,作用域。
public class Demo6 {
//类变量 static
static double Salary = 2000;
?
//实例变量:从属于对象;如果不自行初始化,这个类型的默认值0 0.0
//布尔值:默认是false
//除了基本类型,其余的默认值都是null;
String name;
int age;
?
//main方法
public static void main(String[] args) {
//局部变量
int i = 10;//必须声明和初始化值
System.out.println(i);
System.out.println(Salary);//类变量可以在方法中输出
}
public void sum(){
?
}
}
?
常量
final 常量类型 常量名=值(常量名一般使用大写字符)
static final double PI = 3.14;
变量的命名规范
-
所有变量、方法、类名:见名知意
-
类成员变量:首字母小写和驼峰原则: monthSalary,除了第一个单词外后面的单词首字母大写
-
局部变量:首字母小写和驼峰原则
-
常量:大写字母和下划线:MAX_VALUE
-
类名:首字母大写和驼峰原则: Man,GoodMan
-
方法名:首字母小写和驼峰原则: run(), runRun()
package base;
?
public class Demo7 {
public static void main ( String[]args ) {
//与(and)或(or)非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b: "+(b&&a));//逻辑与运算:两个变量都为真,结果才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);//结果c=5,c++没有运行
}
?
}
?
在与运算中,A&&B,当A为假时,B不被执行。
位运算
package base;
?
public class Demo8 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
A&B = 0000 1100 其中一个是0结果为0,两个都为1,结果为1
A/B = 0011 1101 都为0结果为0,有一个1结果为1
A^B = 0011 0001 AB依次进行比较一样的话为0,不一样为1
~B = 1111 0010 1,0互换
效率极高!!!!
面试题:如何最快计算2*8?
2*8 = 16 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<<3);//二进制表示2的1,向左移动三个位次
?
}
}
?
位运算<<乘以二,>>除以二。
public static void main(String[] args) {
int a = 10;
int b = 20;
//字符串连接符+ String
System.out.println(""+a+b);//结果为1020
System.out.println(a+b+"");//结果为30
//String类型在前,则会将结果转化为String类型,String类型在后则不影响结果
}
三元运算符
public static void main(String[] args) {
//x ? y : z
//如果x==true,则结果为y,否则结果为z
int score = 50;
String type = score < 60 ? "不及格" : "及格";
System.out.println(type);
?
}
public class Demo10 {
/**
* @version 1.8
* @author 30237
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception{
?
}
}