public class 变量名 {
public static void main (String[] args) {
代码段
System.out.println();
}
}
基础细节 :
1.一个源文件中最多只能有一个public类,其他类的个数不限,
且编译后每一个类都对应一个.class文件
2.如果源文件包含一个public类,则文件名必须按该类名命名
3.在控制台使用tab键可以实现命令补全
4.选中 + tab可以实现整体右移,shift + tab可以实现整体左移
5.运算符两边习惯性各加一个空格
6.源文件使用utf-8编码
7.选中,ctrl + / 可以实现快速注释,再次输入就会取消注释
Java转义字符 :
1. \t : 一个制表位,相当于把内容放到表格里并且左对齐,可以理解为四个空格(table)
2. \n : 换行符(new line)
3. \r : 一个回车,相当于让光标回到最开始的位置,这时再输入就会覆盖掉原本的字符
4. \\ : 一个\
5. \' : 一个'
6. \" : 一个"
程序中 + 号的使用 :
1.当左右两边都是数值型时,则做加法运算
2.当左右两边有一方为字符串,则做拼接运算
数据类型 :
1.基础数据类型 :
byte[1],short[2],int[4],long[8],float[4],double[8],char[2],boolean[1]
2.引用数据类型 :
类,接口,数组
数据类型细节 :
1.整型常量(具体值)会先判断范围,如果在byte/short/char的范围内,
就是byte/short/char类型,否则默认为int型
2.java的整型常量(具体值)默认为int型,声明long型常量须后加l/L
//long a = 100L(这里的100不加L则默认为int)
3.java的浮点型常量(具体值)默认为double型,声明float型常量须后加f/F
//float a = 1.23F(这里的1.23不加F则默认为double)
4.占用空间小的常量能放到空间大的数据类型里,反之不可以
5.当对运算结果是小数的,进行相等判断时,应该是以两个数的差值的绝对值,
在某个精度范围来判断(加减可以直接进行相等判断,乘除不行)
/* double a = 2.7;
double b = 8.1/3;
错误写法 : if (a == b);
正确写法 :if (Math.abs(a - b) < 0.01);
*/
6.char类型是可以进行计算的,相当于一个整数,因为他都对应有Unicode码
7.不可以用0或非0的整数代替false或true,这点和C语言不一样
8.当java进行赋值或运算时,精度小的类型自动转换为精度大的数据类型(小能转大,大不能转小)
数据类型按精度从小到大为:
char-int-long-float-double
byte-short-int-long-float-double
9.有多种类型的数据进行混合运算时,优先将数据类型转换为精度最大的数据类型,再进行运算
10.(byte,short)和char之间不会相互自动转换
11.byte,short,char三者之间可以计算,在计算时会先转换为int类型
12.boolean不参与转换
13.强制类型转换符:() 如 int a = (int)2.7,强制类型转换会造成精度的损失或数据的溢出
14.强制类型转换符只针对最近的操作数,可使用小括号提升优先级
/* 错误写法 : int a = (int)10 * 3.5;
正确写法 : int a = (int)(10 * 3.5);
*/
15.基本数据类型与String类型的相互转换
基本数据类型->String : 基本数据类型的值 + " "
String->基本数据类型 : 若String s = "123";
则 int a = Integer.parseInt(s);
double b = Double.parseDouble(s);
float c = Float.parseFloat(s);
long d = Long.parseLong(s);
byte e = Byte.parseByte(s);
boolean f = Boolean.parseBoolean("true");
short g = Short.parseShort(s);
16.System.out.println(s.charAt(0)):把字符串转换成字符并输出
17.字符串比较:字符串名.equals(另一个字符串)
运算符 :
1.短路与(&&)和逻辑与(&)的区别:当第一个条件为假时,&还会判断第二个条件,而&&不会
2.短路或(||)和逻辑或(|)的区别:当第一个条件为真时,|还会判断第二个条件,而||不会
3.逻辑异或(^):当a,b不同时,则为真,否则为假
4.三元运算符: 条件表达式 ? 表达式1 : 表达式2
如果条件表达式为真,则运算后的结果是表达式1
如果条件表达式为假,则运算后的结果是表达式2
5.表达式1和表达式2的类型要与接收变量的类型一致或者可以自动转换成接收变量的数据类型
/* 错误写法 : int a = 1,int b = 2;
int c = a > b ? 1.1 : 2.2;
正确写法 : int a = 1,int b = 2;
int c = a > b ? (int)1.1 : (int)2.2;
*/
标识符(变量名)命名规则 :
1.标识符由26个字母的大小写,0-9,_或$组成
2.标识符不可以用数字开头
3.标识符不可以使用关键字或者保留字,但可以包含关键字或者保留字
4.标识符不能包含空格
标识符命名规范 :
1.包名:所有字母都小写
2.类名,接口名:所有单词的首字母都大写
3.变量名,方法名:从第二个单词开始,首字母大写
4.常量名:所有字母都大写,单词间用_连接
键盘输入 :
import java.util.Scanner;
//Scanner类表示简单文本扫描器,在java.util包
Scanner sc = new Scanner(System.in);
//创建Scanner对象
int a = sc.nextInt();
//接收用户输入
进制 :
1.二进制以0b或0B开头,八进制以0开头,十六进制以0x或0X开头且不区分A-F的大小写
2.二进制转换成八进制(三个一组),二进制转换成十六进制(四个一组),
八进制或十六进制转换成二进制把过程反过来即可
/* 如 0237->0b 010 011 111(八->二)
0x23B->0b 0010 0011 1011(十六->二)
*/
原码,反码,补码 :
1.最高位是符号位,0表示正数,1表示负数
2.正数的原码,反码,补码都一样
3.0的反码,补码都是0
4.负数的反码 = 原码符号位不变,其他位取反
5.负数的补码 = 反码 + 1
switch分支结构 :
switch(表达式){
case(常量):
代码段
break;
...
default:
代码段
break;
}
switch细节 :
1.表达式的数据类型要与case后的常量的数据类型一致或者可以自动转换成常量的数据类型
2.表达式的返回值必须是byte,short,char,int,enum,String
3.default子句和else子句一样,可以不写
4.break语句用来在执行完一个case分支后使程序跳出switch语句快,
case1后面没有break时,则会顺序执行case2
数组 :
1.数组的长度 = 数组名.length
2.数组可以用new创建(动态初始化) int a[] = new int[5]
//创建了一个数组,数组名为a,存放了5个int
3.数组的静态初始化:int a[] = {...}
类与对象 :
1.类 = 结构体,对象 = 结构体变量
例:class Cat {
String name;
int age;
String colour;
}
//创建类Cat和他的三个属性
Cat cat1 = new Cat();
//创建对象猫,并把他赋值给cat1
cat1.name = "小白";
cat1.age = "5";
cat1.colour = "白色";
System.out.println(cat1.name);
//输出cat1的名字
2.属性的定义:访问修饰符 属性类型 属性名
有四种访问修饰符:public proctected 默认 private
3.栈:存放基本数据类型
堆:存放对象
方法区:常量池(字符串),类加载信息
方法 : (和函数差不多)
class Cat {
String name;
int age;
String colour;
public void speak() {
System.out.println("123");
}
}
//公开的,没有返回值的,speak方法,输出了123
1.方法创建后,不去调用,不会有输出
2.先创建对象,再调用方法
Cat cat1 = new Cat();
cat1.spaek();
//调用方法speak()
3.class Cat {
String name;
int age;
String colour;
public void cal(int n) {
int res = 0;
for (int i = 0; i <= n; i++){
res+=i;
}
System.out.println(res);
}
//输出了1-n的和,这里用了形参n
cat1.cal(5);
//调用方法cal,计算1-5的和