基础语法学习
注释
-
单行注释 //注释
-
多行注释 /* 注释 */
-
JavaDoc:文档注释 /** */
/**
*@Description 内容
*@一些注释
*/
标识符和关键字
-
关键字
-
所有标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始;不能使用关键字作为变量名或方法名,同时标识符是大小写敏感的
合法标识符举例:age、$salary、_value、__1_value
非法标识符举例:123abc、-salary、#abc
-
可以使用中文命名,但一般不建议使用(较low)
数据类型
基本类型
-
整数类型:
byte、short、int、long
在定义long类型时,一般在数字后面加上L表示:long name = 23L;
-
浮点类型:
float、double
在定义float类型时,一般在数字后面加上F表示:float name = 23F;
-
字符类型:
char (char name = 'A' 只能定义一个字符,'AB'不行)
// 字符串:String 不是关键字,是一个类 (String name = "CBDA"😉
-
boolean类型:(是非)
true、false (boolean name = true)
类型拓展
-
整数拓展:二进制0b 十进制 八进制0 十六进制0x
int i = 10; int i2 = 010; //八进制0 int i3 = 0x10; //十六进制0x 0~9 A~F System.out.println(i); System.out.println(i2); System.out.println(i3); //输出结果:10 8 16 -
浮点数拓展:银行业务怎么表示钱?
//BigDecimal 数学工具类(大数类型,以后会说) //float 能表现的字长是有限的 离散的 存在舍入误差 结果只能是 大约数 接近但不等于 //double //最好完全避免使用浮点数进行比较 //最好完全避免使用浮点数进行比较 //最好完全避免使用浮点数进行比较 float f = 0.1f; //0.1 double d = 1.0/10; //0.1 System.out.println(f==d); //false float d1 = 23333333333333333333333333333333333f; float d2 = d1 +1; System.out.println(d1==d2); //输出结果:false true -
字符拓展:
char c1 = 'a'; char c2 = '中'; System.out.println(c1); System.out.println((int)c1); //强制转换 System.out.println(c2); System.out.println((int)c2); //强制转换 //输出结果:a 97 中 20013 //所有的字符本质还是数字 //编码 unicode 编码表:(97 = a 65 = A) 占2字节 最多可表示0~65536个字符 2^16 = 65536 // U0000 - UFFFF char c3 = '\u0061'; //斜杠u代表转义 System.out.println(c3); //a //输出结果:a -
转义字符:
//转义字符 // \t 制表符 // \n 换行 //等一系列,可自行查询 System.out.println("Hello\tWorld!"); System.out.println("Hello\nWorld!"); //输出结果:Hello World! Hello // World! -
布尔值拓展:
boolean flag = true; //都默认判断括号里是否为真 if (flag==true){} //新手常用 if (flag){} //老手常用 //Less is More! 代码要精简易读 -
未学到的零散拓展 (增加兴趣)
String sa = new String("hello world"); String sb = new String("hello world"); System.out.println(sa==sb); String sc = "hello world"; String sd = "hello world"; System.out.println(sc==sd); //输出结果:false true //等之后学到对象 从内存分析
类型转换
低-----------------------------------------------------------------高
byte,short,char -> int -> long -> float -> double
(小数优先级大于整数,float是32、long是64,所以float优先级高)
-
强制类型转换:
//强制转换 (类型)变量名 高-->低 int i = 128; byte b = (byte)i; //内存溢出 (byte 最大127) System.out.println(i); System.out.println(b); //输出结果:128 -128 char c = 'a'; int d = c+1; System.out.println(d); System.out.println((char)d); //输出结果:98 b -
自动类型转换:
//自动转换 低-->高 int i1 =128; double d = i1; System.out.println(i1); System.out.println(d); //输出结果:128 128.0 -
注意点:
1. 不能对布尔值进行转换 2. 不能把对象类型转换为不相干的类型 3. 在把高容量转换为低容量的时候,强制转换 4. 转换的时候可能存在内存溢出,或者精度问题!(精度问题一般会在小数用到) -
精度问题:(接上方注意点4)
//转换后小数没了 System.out.println((int)23.7); //23 System.out.println((int)-45.89f); //-45 //输出结果:23 -45 -
溢出问题
//操作比较大的数时,注意溢出问题 //JDK7新特性,数字之间可以用下划线分割 int money = 10_0000_0000; //下划线不会被输出,适合用来计数 int years = 20; int total = money * years; //-1474836480 , 计算的时候溢出了 long total2 = money * years; System.out.println(total); //输出结果:-1474836480 System.out.println(total2); //默认money和years是int , 计算完之后才转换成long类型 , 转换之前已经存在问题了 //输出结果:-1474836480 long total3 = money * ((long)years); //在做这个操作时,他会把整个表达式提升,就会全部用long进行计算 System.out.println(total3); //输出结果:20000000000 // L l 尽量都用大写字母表示防止混乱 (L是指加在数字后面的:10_0000_0000L 表示long类型)
变量、常量、作用域
type varName [=value] [{,varName[=value]}] ;
//数据类型 变量名 = 值; 可以使用逗号隔开来声明多个同类型变量。
//例子
int a=1,b=2,c=3; //程序可读性 差,一般不建议使用
String name = "hetui!";
char x = 'X';
double pi = 3.14;
-
变量作用域:类变量、实例变量、局部变量
public class Variable{ static int allClicks=0; //类变量 String str="hello world"; //实例变量 public void method(){ int i =0; //局部变量 } }public class Demo4 { //类变量 static (静态) 之后学到内存分析jvm的时候再重点学习static //目前,先把方法和类变量前都加上static,方便调用它,就不用去new了,new在对象时候学 static double salary = 2500; //属性:变量 //实例变量:从属于对象; 如果不自行初始化,这个类型的默认值 整数:0 小数:0.0 字符串:u0000 (方法外,类里面) //布尔值:默认是false //除了基本类型,其余的默认值都是null; String name; int age; //main方法 public static void main(String[] args) { //局部变量:必须声明和初始化值 int i; System.out.println(i); //输出报错:可能尚未初始化变量 int i1 = 10; System.out.println(i1); //可正常输出 //变量类型 变量名字 = new Demo4(); Demo4 demo4 = new Demo4(); System.out.println(demo4.age); System.out.println(demo4.name); //输出结果:0 null //类变量 static (静态) (这里可以直接调用,不需要像上面一样new) System.out.println(salary); } //其他方法 public void add(){ } } -
常量:初始化后不能再改变的值
常量名一般使用大写字符
final 常量名 = 值; final double PI=3.14;public class Demo5 { //修饰符,不存在先后顺序 (static final 修饰double) static final double PI = 3.14; public static void main(String[] args) { System.out.println(PI); //输出结果:3.14 } } -
变量的命名规范:
- 所有变量、方法、类名:见名知意
- 类成员变量、局部变量:首字母小写和驼峰原则:monthSalary 除了第一个单词以外,后面的单词首字母大写 lastName
- 常量:大写字母和下划线:MAX_VALUE (一般用大写,如果单词较多,中间加下划线去定义)
- 类名:首字母大写和驼峰原则:Man , GoodMan (新建class的名字)
- 方法名:首字母小写和驼峰原则:run() , runRun()
基本运算符
算术运算符:+,-,*,/,%,++,--
赋值运算符:=
关系运算符:>,<,>=,<=,==,!=,instanceof
逻辑运算符:&&,||,! (与或非)
(以下了解即可)
位运算符:&,|,^,~,>>,<<,>>>
条件运算符:?
扩展赋值运算符:+=,-=,*=,/=
演示
// 二元运算符
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b); //a,b都为int型,除完也为int型,四舍五入取0,因为只有整数部分
System.out.println(a/(double)b); //强转一下,转一个为double
//输出结果:0 0.5
long a = 23333333333333L;
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 (如果没有long等等,结果都为int)
System.out.println(c+d); //Int (包括short + byte 结果也为int)
System.out.println((String)(c+d)); //在转为String时,系统报错:cannot cast 'int' to 'java.lang.String' (所以为int类型)
//关系运算符返回的结果: 正确,错误 布尔值
int a = 10;
int b = 20;
int c = 21;
//取余(模运算)
System.out.println(c%a); //c / a 21 / 10 = 2 ... 1
//输出结果:1
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
//输出结果:false,true,false,true
自增自减运算符、初识Math类
//++ -- 自增、自减 一元运算符
int a = 3;
int b = a++; //执行完这行代码后,先给b赋值,再自增
//a++ a = a + 1
System.out.println(a);
//++a a = a + 1
int c = ++a; //执行完这行代码前,先自增,再给c赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
//输出结果:4 5 3 5
//幂运算 2^3 2*2*2 = 8 很多运算,我们会使用一些工具类来操作
double pow = Math.pow(2, 3);
System.out.println(pow);
//输出结果:8.0
逻辑运算符、位运算符
- 逻辑运算
//逻辑运算符
// 与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a&&b)); //逻辑与运算:两个变量都为真,结果才为true
System.out.println("a || b:"+(a||b)); //逻辑或运算:两个变量有一个为真,则结果才为true
System.out.println("!(a && b):"+!(a&&b)); //如果是真,则为假;如果是假,则为真
//输出结果:false true true
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4); //这行代码执行到c<4(为假,已经出结果了)就不继续往下执行了
System.out.println(d);
System.out.println(c); //如果执行了c++,那么结果应当是c = 6,但没有执行,所以这叫短路
//输出结果:false 5
- 位运算
//位运算
/*
//二进制
A = 0011 1100
B = 0000 1101
-----------------------------------------------------------
A&B = 0000 1100 //A与B,上下比较如果两个都为1则为1,否则都为0
A|B = 0011 1101 //A或B,上下比较如果两个都为0则为0,否则都为1
A^B = 0011 0001 //A异或B,上下比较如果两个相同则为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<<3);
//输出结果:16
三元运算符及小节
-
扩展赋值运算符
int a = 10; int b = 20; a += b; //a = a+b a -= b; //a = a-b System.out.println(a); //字符串连接符 在 + 两侧他只要有一方出现了 String 类型他就会把其他操作数都转换成 String 再进行连接 System.out.println(""+a+b); //如果字符串在前面,后面的会拼接 //输出结果:1020 System.out.println(a+b+""); //如果字符串在后面,前面的会进行运算 //输出结果:30 -
条件运算符(三元运算符)
// x ? y : z //如果x==true,则结果为y,否则为z int score = 50; String type = score <60 ?"不及格":"及格"; System.out.println(type); //输出结果:不及格
包机制
一般利用公司域名倒置作为包名:com.example.www
//包语句的语法格式为:
package pkg1[. pkg2[. pkg3…]];
//为了能够使用某一个包的成员,我们需要在java程序中明确导入该包,使用“import”语句可完成此功能
import package1[.package2…].(classname|*);
举例:
package com.cnblogs.operator;
import com.cnblogs.base.*; //导入这个包下所有的类,*代表所有类
//下面代码可不用看
public class Demo8 {
public static void main(String[] args) {
}
}
JavaDoc
- javadoc命令是用来生成自己API文档的
- 参数信息
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
举例:
package com.cnblogs.base;
/**
* @author H921
* @version 1.0
* @since 1.8
*/
//jdk帮助文档:https://docs.oracle.com/javase/8/docs/api/
public class Doc {
String name; //类变量(在类里定义一个变量)
/**
* @author H921
* @param name
* @return
* @throws Exception
*/
//定义一个方法(之后讲方法的时候会明白这些是如何定义的)
public String test(String name) throws Exception{
return name;
}
//除了通过命令行生成 javadoc 参数 java文件
//需学会查找使用IDEA生成javadoc文档! 面向百度编程!(不会的东西,第一时间问百度)
//基础部分的一切知识,后面几乎每天都会用
}
找到类的地址(右键类,点Show in Explorer)
在当前文件夹打开命令行(导航栏前面 空格 + cmd)
输入:javadoc -encoding UTF-8 -charset UTF-8 Doc.java (这是防止有中文命名出现乱码情况)
编码为:UTF-8 字符及编码:UTF-8
会生成 index.html(首页),可点击打开文档

简记基础语法的学习
浙公网安备 33010602011771号