一开始老师给我推荐的马士兵腾讯课堂的视频,但是因为年代久远,有很多东西放在现在不太适用,所以我又在b站搜索了狂神说的java教程,然后又参考了菜鸟教程,这三个教程综合起来学习java(虽然很乱但是这种学习方式对我来说还挺适用……),目前编程语言只学了c,作为一个计算机小白,可能会有很多学习方法不恰当,很多知识点理解错误。都遵从我个人记笔记的习惯,可能会有些混乱。
另外,有关于环境的安装就不会在此说明。
基础语法
标识符
凡是自己可以起名字的地方都叫标识符。
可以包含下划线,$,字母。 约定俗称的规则——见名知意。
关键字
要用时现查即可
常量
以下为各种常量的类型:
- 整型常量:如123
- 实型常量:如3.14
- 字符常量:如’a’
- 逻辑常量:true,false
- 字符串常量:如"helloworld"
注:常量在某些语境里也指值不可变的变量。 (final关键字)
变量
程序中是最基本存储单元, 要素包括:变量名,变量类型,作用域。
本质上讲,是内存之中的一小块区域,使用时,必须遵从先声明再赋值 的规则。
程序执行的过程:
变量的分类
按被声明的位置分:
- 局部变量:方法或语句块内部定义的变量
- 成员变量:方法外部、类的内部定义的变量
按所属的数据类型分:
- 基本数据类型变量
- 引用数据类型变量
如:
public class HelloWorld {
int j = 9; //成员变量
public static void main(String[] args) {
System.out.println("Hello world!");
int i = 8; //局部变量
}
}
数据类型的划分
Boolean型
用于逻辑运算,true和false
char型
java采用Unicode编码,每个字符占两个字节。
char c1 = '\u0061';
整数类型
浮点类型
表示类型:
- 十进制
- 科学计数法:如3.14e2
java浮点型常量默认为double类型,所以声明时需要在数字后加f或F,如:
float f = 12.3f;
基本数据类型转换
(boolean类型不可以转换成其他类型的)
整型,字符型和浮点型在混合运算中相互转换,遵从以下规则:
- 容量小的自动转化成容量大的(byte,short,char之间不会互相转换):byte,short,char>int>long>float>double
- 容量大向容量小的转换要加强制转换符,但可能造成精度降低或溢出。
如:
public class HelloWorld {
public static void main(String[] args) {
int i = 19;
byte b = (byte) i;
System.out.println(i);
System.out.println(b);
}
}
public class HelloWorld {
public static void main(String[] args) {
int i = 19;
double b = i;
System.out.println(i);
System.out.println(b);
}
}
注:
- 数字之间可以用下划线分割,方便操作大数字。
- 操作比较大的数字的时候注意溢出问题。
运算符
这里与c差不多,由于本人学过c,所以对在此的运算符的意义不过多的阐述。
关于自加(减):++在前代表先运算再取值,在后反之。
拓展:
三目条件运算符
语法格式:x?y:z
符合x条件结果就为y,反之为z。
int score = 80;
int x = -100;
String type = score < 60 ? "不及格" : "及格";
位运算
public class Test {
public static void main(String[] args) {
int a = 60; /* 60 = 0011 1100 */
int b = 13; /* 13 = 0000 1101 */
int c = 0;
c = a & b; /* 12 = 0000 1100 */
System.out.println("a & b = " + c );
c = a | b; /* 61 = 0011 1101 */
System.out.println("a | b = " + c );
c = a ^ b; /* 49 = 0011 0001 */
System.out.println("a ^ b = " + c );
c = ~a; /*-61 = 1100 0011 */
System.out.println("~a = " + c );
c = a << 2; /* 240 = 1111 0000 */
System.out.println("a << 2 = " + c );
c = a >> 2; /* 15 = 1111 */
System.out.println("a >> 2 = " + c );
c = a >>> 2; /* 15 = 0000 1111 */
System.out.println("a >>> 2 = " + c );
}
}
选择语句
java选择语句的语法结构和c差不多,所以直接本人不做过多的解释,会直接举一些例子。
if语句
public class HelloWorld {
public static void main(String[] args) {
int x = 10;
if (x<20){
System.out.println("条件成立");
}
}
}
public class HelloWorld {
public static void main(String[] args) {
int x = 30;
if (x < 20){
System.out.println("这是if语句");
}else{
System.out.println("这是else语句");
}
}
}
结果:
switch语句
switch语句中的变量类型可以是:
- byte,short,int,char,还有字符串String类型
- case标签必须为字符串常量或字面量
另外,在switch语句中,要善用break,不使用break,会造成case穿透现象,现象如下:
public class HelloWorld {
public static void main(String[] args) {
char grade = 'c';
switch (grade) {
case 'a':
System.out.println("优秀");
break;
case 'b':
System.out.println("良好");
break;
case 'c':
System.out.println("及格");
case 'd':
System.out.println("再接再厉");
case 'e':
System.out.println("挂科");
default:
System.out.println("未知等级");
}
}
}
循环语句
while语句
public class HelloWorld {
public static void main(String[] args) {
int i = 0;
int sum = 0;
while (i<=100){
sum = sum + i;
i++;
}
System.out.println(sum);
}
}
do…while
public class HelloWorld {
public static void main(String[] args) {
int a = 0;
while (a<0){
System.out.println(a);
a++;
}
System.out.println("==========");
do {
System.out.println(a);
}while (a<0);
}
}
注:while循环是先判断后执行,可以不进行循环,但do…while是先执行后判断,所以do…while循环至少执行一次。
for
public class HelloWorld {
public static void main(String[] args) {
int a = 1;
while (a<=100){
System.out.println(a);
a+=2;//迭代 a=a+2
}
System.out.println("while循环结束");
for (int i=1;i<=100;i++){
System.out.println(i);
}
}
}
for循环增强版
JDK5以后推出了for循环增强版
public class HelloWorld {
public static void main(String[] args) {
int[] numbers = {10,20,30,40,50};
for (int x:numbers){
System.out.println(x);
}
}
}
其实本质上就是遍历数组用的。因为还没有学习到数组,所以这里不做过多的笔记,等到学习数组后会再来补。
break和continue
break直接跳出循环,不会执行接下来的语句
continue是中止当前这一次循环,然后再继续执行接下来的语句(相当于跳过)。
方法
java中的方法,相当于一些编程语言之中的“函数”,所以在学习java方法这一知识点时,可以类比c中的函数。
在学习本节时,会涉及以下概念:
- 形式参数:在方法被调用时用于接收外界输入的数据。
- 实参:调用方法时实际传给方法的数据。
- 返回值
- 返回值类型
设计方法的原则:保持方法的原子性,即一个方法只完成一个功能。
方法的定义:
方法的命名规则: 方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。
java包机制
包相当于一个文件夹。
包的命名: 域名的倒置。
除了自己创建包,我们为了能够使用某一个包的成员,我们需要在java程序中明确导入该包,使用“import”语句即可完成。
javadoc生成文档
javadoc命令是用来生成自己API文档的
参数信息:
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
这里有两种方法,一种是命令行(cmd),一种是在idea里生成。
命令行方式
输入javadoc -encoding UTF-8 -charset UTF-8 Doc.java命令,注意Doc.java是自己类的名字
在文件夹里就会出现这些html的文档
随便打开一个: