环境搭建
**注:因为蓝桥云课自带环境所以无需搭建,可直接跳过,这是搭建本地主机的环境。**
● 学习用的是 8 版本 
下载网址
○ www.oracle.com ○ java.sun.com ○ http://www.oracle.com/technetwork/java/javase/downloads/index.html
安装jdk
注:路径不要包含中文和空格 ○ 右击 我的电脑 → 属性 → 高级系统设置 →高级 → 环境变量 ○ JAVA_HOME : jdk安装路径 ○ CLASSPATH : .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; //记得前面有个"." ○ Path : %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
测试
○ 开始 → 运动 → 输入 “cmd” ○ 键入命令: java -version、java、javac 几个命令,出现以下信息,说明环境变量配置成功
软件
推荐eclipse 或者IDEA
简介
Java 中所有的代码都必须包含在 class 中,main 方法是程序的入口,并且 Java 是区分大小写的,如果写成 Main,那么程序将因找不到程序入口而无法运行。使用 public 修饰的 class 名(HelloWorld)须和源代码文件名相同。
编译源代码
输入 javac HelloWorld.java,如果程序没有任何提示,并且在同级目录下生成了一个 .class 扩展名的文件,那么说明编译成功,反之编译失败。 运行程序:输入 java HelloWorld,这个时候不需要再添加扩展名了。 
变量
● 程序通过改变变量的值来改变整个程序的状态。为了方便使用变量,所以变量都需要命名,叫做变量名。 ● 格式:数据类型 变量名称; 常量 ● 常量的值是不能被修改的,Java 中的 final 关键字可以用于声明属性(常量),方法和类。当 final 修饰属性时,代表该属性一旦被分配内存空间就必须初始化,它的含义是“这是无法改变的”或者“终态的”。在变量前面添加关键字 final 即可声明一个常量。在 Java 编码规范中,要求常量名必须大写。 ● 格式:final 数据类型 常量名 = 值;
数据类型
 
字符串(String)
字符串长度
public int length(){
}
字符串比较
public class StringTest {
public static void main(String[] args){
String s = new String("Java");
String m = "java";
System.out.println("用equals()比较,java和Java结果为"+s.equals(m));
System.out.println("用equalsIgnoreCase()比较,java和Java结果为"+s.equalsIgnoreCase(m));
}
}
 注意 ○ 若想忽略大小写 调用 equalsIgnoreCase() 其他写法一样 ○ “==” 是比较两个对象在内存中存储的地址是否一样  变量 b 的值是 false,因为 s1 对象对应的地址是 “abc” 的地址,而 s2 使用 new 关键字申请新的内存,所以内存地址和 s1 的 “abc” 的地址不一样,所以获得的值是 false。
字符串连接
○ 使用 +,比如 String s = "Hello " + “World!”。 ○ 使用 String 类的 concat() 方法。 charAt() 方法 作用是按照索引值(规定字符串中第一个字符的索引值是 0,第二个字符的索引值是 1,依次类推),获得字符串中的指定字符。
```java
String s = "abc";
char c = s.charAt(1);
===> 变量 c 的值是 'b'。
常用字符串提取方法

StringBuilder
String 是无法被修改的,对 String 的修改,其实是新建了一个 String 对象。如果需要修改字符串的内容,可以使用 StringBuilder。它相当于一个存储字符的容器。
初始化
构造一个不包含任何字符且初始容量为 16 的 StringBuilder StringBuilder a = new StringBuilder(); 构造一个不包含任何字符且容量为 cap 的 StringBuilder StringBuilder b = new StringBuilder(int cap); 构造一个 StringBuilder,内容初始化为 str
StringBuilder c = new StringBuilder(String str);
public class StringBuilderTest {
public static void main(String[] args){
StringBuilder s1 = new StringBuilder();
s1.append("java");
StringBuilder s2 = new StringBuilder(5);
StringBuilder s3 = new StringBuilder("shiyanlou");
System.out.println("s1:" + s1.toString() + "\tcap:" + s1.capacity());
System.out.println("s2:" + s2.toString() + "\tcap:" + s2.capacity());
System.out.println("s3:" + s3.toString() + "\tcap:" + s3.capacity());
}
}
==>
$ javac StringBuilderTest.java
$ java StringBuilderTest
s1:java cap:16
s2: cap:5
s3:shiyanlou cap:25
其中 s3 的 capacity 为 25 是因为初始容量 16 + shiyanlou 的长度 9。
常用方法

算术运算符

● 前缀自增自减法 (++i,–i): 先进行自增或者自减运算,再进行表达式运算。 ● 后缀自增自减法 (i++,i–): 先进行表达式运算,再进行自增或者自减运算
位运算符

遗留问题点:按位右移和按位右移补零的区别?
逻辑运算符
 && 与 || 是具有短路性质,当按优先级顺序计算到当前表达式时,表达式的结果可以确定整个表达式的结果时,便不会继续向后进行判断和计算,而直接返回结果。
关系运算符
 ● 三目运算符 ○ 布尔表达式 ?表达式 1 : 表达式 2; ○ 运算过程:如果布尔表达式的值为 true,则返回表达式 1的值,否则返回表达式 2的值。 ● == 和 != 适用于所有的基本数据类型,其他关系运算符不适用于 boolean,因为 boolean 值只有 true 和 false,比较没有任何意义。 ● == 和 != 也适用于所有对象,可以比较对象的引用是否相同。
运算符优先级
   
关键字

方法
定义

访问修饰符:
代表方法允许被访问的权限范围, 可以是 public、protected、private 或者省略(default) ,其中 public 表示该方法可以被其他任何代码调用。
返回值类型
方法返回值的类型,如果方法不返回任何值,则返回值类型指定为 void (代表无类型);如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用 return 语句返回值。
方法名
是方法的名字,必须使用合法的标识符。
参数列表
传递给方法的参数列表,参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
方法体
方法体包含具体的语句,定义该方法的功能。 根据方法是否带参、是否带返回值,可将方法分为四类: ● 无参无返回值方法 ● 无参带返回值方法 ● 带参无返回值方法 ● 带参带返回值方法
IF 语句
语法一

语法二

语法三
 
if嵌套

switch语句
语法

当 switch 后表达式的值和 case 语句后的值相同时,从该位置开始向下执行,直到遇到 break 语句或者 switch 语句块结束;如果没有匹配的 case 语句则执行 default 块的代码。 ● defualt 块不是必须的,默认为空。
while 和 do-while 语句
while语法: 
- 判断 while 后面的条件是否成立 ( true or false )
- 当条件成立时,执行循环内的代码。
do-while 语法

- 先执行一遍循环操作,然后判断循环条件是否成立。
- 如果条件成立,继续执行1、2,直到循环条件不成立为止

for 语句
语法
 for 相比 while 和 do-while 语句结构更加简洁易读,它的执行顺序:
- 执行循环变量初始化部分(1),设置循环的初始状态,此部分在整个循环中只执行一次。
- 进行循环条件的判断(2),如果条件为 true,则执行循环体内代码(4);如果为 false ,则直接退出循环。
- 执行循环变量值操作部分(3),对循环变量的值进行修改,然后进行下一次循环条件判断(2)。

习题 字符串处理
● 从控制台输入一行字符串 ● 去除字符串中的所有空格 ● 打印去除空格后的字符串
import java.util.Scanner;
public class StringUtil {
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
String a=in.nextLine();
StringBuilder stringBuilder = new StringBuilder(a);
for (int i = 0; i < stringBuilder.length(); i++) {
if (stringBuilder.charAt(i)==' ') {
stringBuilder.deleteCharAt(i);
i--;
}
}
System.out.println(stringBuilder.toString());
}
}
习题 对比字符串
● 从控制台输入字符串 a 和字符串 b ● 比较字符串 a 和字符 b 是否完全一致,长度,内容等完全一致。 ● 如果完全一致,输出相同,如果不一致,输出不同。 ● 禁止使用equals方法
import java.util.Scanner;
public class ContrastString{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String a = in.nextLine();
String b = in.nextLine();
boolean flag=true;
if(a.length()!=b.length())
flag=false;
else{
for(int i=0;i<a.length();i++){
if(a.charAt(i)!=b.charAt(i)){
flag=false;
break;
}
}
}
if(flag)
System.out.println("相同");
else
System.out.println("不相同");
}
}
跳转语句
● break 关键字经常用在条件和循环语句中,用来跳出循环语句。 习题 打印星期 ● 从控制台获取一个整型参数 ● 当输入数字 1 时输出今天是星期一 ● 当输入数字 2 时输出今天是星期二
import java.util.Scanner;
public class PrintWeek{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int a=in.nextInt();
System.out.print("今天是星期");
switch(a){
case 1:
System.out.println("一");
break;
case 2:
System.out.println("二");
break;
case 3:
System.out.println("三");
break;
case 4:
System.out.println("四");
break;
case 5:
System.out.println("五");
break;
case 6:
System.out.println("六");
break;
case 7:
System.out.println("日");
break;
}
}
}
数组
有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便,把具有相同类型的若干元素按无序的形式组织起来的一种形式。这些无序排列的同类数据元素的集合称为数组。数组是用于储存多个相同类型数据的集合。 
下标从 0 开始,到数组长度 -1 结束。
语法

语法二
 注意点
- 数组下标从 0 开始。所以数组的下标范围是 0 至 数组长度 -1。
- 数组不能越界访问,否则会报错。
for语法强化 
public class JudgePrime{
public static void main(String[] args){
int[] ages={12,18,9,33,45,60};
int i=1;
for(int age:ages){
System.out.println("数组中第"+i+"个元素是"+age);
i++;
}
}
}
二维数组
语法

习题 数组应用
有一份成绩单,上面有 10 位学生的成绩(61,57,95,85,75,65,44,66,90,32),请求出平均成绩并输出。
public class AverageScore{
public static void main(String[] args){
int[] score={61,57,95,85,75,65,44,66,90,32};
double avg=0;
int sum=0;
for(int i=0;i<10;i++)
sum+=score[i];
avg=sum/10;
System.out.println(avg);
}
}
知识点 ● 输入 ○ 导包 import java.util.Scanner; ○ 定义 Scanner in= new Scanner(System.in); ○ 输入 ■ 字符串 in.nextLine(); ■ 整形 in.nextInt(); ■ … ○ 关闭输入 ■ in.close();
来源
图片以及资料来源于蓝桥云课(https://www.lanqiao.cn/)、尚硅谷以及百度 ,由小编学习后整理发布,若有误之处请联系,必定改正!谢谢!
|