学习的内容来自bilibili视频还有runoob.com的java部分
本文仅作复习用,欢迎分享、转载,但是请注明出处谢谢
首先是HelloWorld.java文件的内容
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
要注意,public class xxxx 这里边的xxxx要和文件名一致。大小写一致
在HelloWorld.java 根目录下打开PowerShell
javac HelloWorld.java
这个时候在同目录下会出现一个HelloWorld.class文件。这个时候执行
java HelloWorld
就会出下如下,即输出Hello World
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
字节型 | byte | 1个字节 | -128-127 |
短整型 | short | 2个字节 | -32768~32767 |
整形 | int | 4个字节 | -231 ~231-1 |
长整型 | long | 8个字节 | -263~263-1 |
单精度 | float | 4个字节 | 1.2013E-45~3.4028E+38 |
双精度 | double | 8个字节 | 4.9E-324~1.7977E+308 |
字符型 | char | 2个字节 | 0-65535 |
布尔 | boolean | 1个字节 | true /false |
主要有类、数组、接口
在函数中的声明格式如下
<变量类型> <变量名>;
<变量类型> <变量名>=<初始值>;
//如下
int num;//这个变量没有初始值
int num1 = 100;//这个变量的初始值为100
//还有如下声明方式
int a,b,c,d;//声明了abcd四个整形变量
int a1=100,b1=200,c1=300;//声明了a1、b1、c1三个变量,并且赋予了初始值100、200、300
在如下代码中,num1的作用范围仅在花括号内
public class demo{
public static void main(String args[]){
int num1 =100;
System.out.println(num1);
{
int num1_1 = 200;
System.out.println(num1_1);//输出200
System.out.println(num1);//输出100
}
int num1_1 = 300;//重新声明num1_1 作用域(花括号)内的num1_1已经销毁
System.out.println(num1_1);//输出300
}
}
算数运算符符号 | 作用 |
---|---|
+ | 加法运算,还用做字符串连接 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算 |
% | 取模运算(取余数 |
++/– | 自增自减运算 |
在变量类型不同的算术运算中,结果将去范围大的数
public class demo{
public static void main(String[] args){
int a =1;
System.out.println(a+1);//输出2
System.out.println(a-1);//输出0
System.out.println(a*1);//输出1
System.out.println(a/1);//输出1
}
}
public class demo{
public static void main(String[] args){
System.out.println(100%3);//输出1
//100/3=33.....1
//被除数/除数=商......余数
//取模运算就是取余数
}
}
public class demo{
public static void main(String[] args){
System.out.println("Hello");//输出->Hello
System.out.println("Hello"+"World!");//输出->HelloWorld
System.out.println("Hello"+20+30);//输出->Hello2030
//任何类型在和String类型使用+连接的时候都会变成字符串
System.out.println("Hello"+(20+30));//输出->Hello50
//上面这条输出涉及到运算符优先级的问题
}
}
任何类型在和String类型使用+连接的时候都会变成字符串
一般与变量一同使用。例如++a、a++、–a、a–
自增自减运算符在变量的前后代表着他是什么时候使用的。
以自增运算符为例,b = ++a可以看做一个变量,b即等于a+1.自增运算符在使用++a之前即生效。(先加后用)
而b = a++则是b先给a 的值,然后a再实现 a=a+1 (先用后加)
具体的实现看下面的例子
public class demo{
public static void main(String[] args){
int a=0;
System.out.println(a++);//输出->0在自增过后,此时a=1
System.out.println(a);//输出->1
System.out.println(++a);//输出->2
System.out.println(a);//输出->2
System.out.println(--a);//输出->1
System.out.println(a);//输出->1
System.out.println(a--);//输出->1
System.out.println(a);//输出->0
}
}
赋值运算符 | 作用 |
---|---|
= | 等于 |
+= | 加等于,a+=1实际上为a=a+1 |
-= | 减等于,a-=1实际上为a=a-1 |
/= | 除等于,a/=1实际上为a=a/1 |
*= | 乘等于,a * =1实际上为a=a * 1 |
%= | 取模等于,a%=1实际上为a=a%1 |
比较运算符 | |
---|---|
== | 等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
!= | 不等于 |
当表达式满足比较运算符的时候,表达式的值为true。若不满足,则表达式的值为false
要特别注意,=为赋值号。==才是比较是否相等的符号
逻辑运算符 | 符号 |
---|---|
&& | 与 |
|| | 或 |
! | 非 |
逻辑运算符主要是运用在boolean(布尔)运算中的
且在逻辑运算中要注意短路效应
例如
<表达式1>&&<表达式b> 当表达式1为false时,将不会执行或者是验证表达式2
<表达式1>||<表达式b> 当表达式1为true时,将不会执行或者是验证表达式2
三元运算符的字符表达为:
<条件判断> ? <表达式1>:<表达式2>;
当条件判断为true时,整个三元运算符的值为表达式1.条件判断为false时,整个三元运算符的值为表达式2.
public class demo{
public static void main(String[] args){
boolean p;
p = 1>3 ? true : false;//此时1不大于3,条件判断不成立,输出false给p
System.out.println(p);//输出p->false
}
}
Function 方法、函数 主流的两种叫法
public static void main(String[] args){
//在这里写上代码
return ;
}
在上面的代码中 public 和static 是函数的修饰符
void代表返回值的类型,void表示不返回值,即return ; 可以不写。
void可以用int 、double、String等数据类型来替代,这取决于你想要返回的值。
函数这部分很简单,懒得详细写
顺序结构就是按照代码的顺序从第一行依次读取到最后一行
这个只是提一下
格式如下。
if(布尔表达式)
{
//如果布尔表达式为true将执行的语句
}
下面给一个单if的示例
//Test.java
public class Test {
public static void main(String args[]){
int x = 10;
if( x < 20 ){
System.out.print("这是 if 语句");
}
}
}
//结构如下
if(布尔表达式){
//如果布尔表达式的值为true
}else{
//如果布尔表达式的值为false
}
代码示例:
//Test.java
public class Test {
public static void main(String args[]){
int x = 30;
if( x < 20 ){
System.out.print("这是 if 语句");
}else{
System.out.print("这是 else 语句");
}
}
}
语法
if(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
//如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
//如果布尔表达式 3的值为true执行代码
}else {
//如果以上布尔表达式都不为true执行代码
}
代码示例:
//Test.java
public class Test {
public static void main(String args[]){
int x = 30;
if( x == 10 ){
System.out.print("Value of X is 10");
}else if( x == 20 ){
System.out.print("Value of X is 20");
}else if( x == 30 ){
System.out.print("Value of X is 30");
}else{
System.out.print("这是 else 语句");
}
}
}
输出结果
Value of X is 30
语法
if(布尔表达式 1){
////如果布尔表达式 1的值为true执行代码
if(布尔表达式 2){
////如果布尔表达式 2的值为true执行代码
}
}
代码示例:
//Test.java
public class Test {
public static void main(String args[]){
int x = 30;
int y = 10;
if( x == 30 ){
if( y == 10 ){
System.out.print("X = 30 and Y = 10");
}
}
}
}
运行结果如下
X = 30 and Y = 10
switch case 语句有如下规则:
- switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。
- switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
- case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
- 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。
- 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。
- switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。
注意点:
1.case后面的数值不能重复
2.switch后面的括号内的值只能是byte/short/char/int/String/enmu
语法:
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
程序实例
//Test.java
public class Test {
public static void main(String args[]){
//char grade = args[0].charAt(0);
char grade = 'C';
switch(grade)
{
case 'A' :
System.out.println("优秀");
break;
case 'B' :
case 'C' :
System.out.println("良好");
break;
case 'D' :
System.out.println("及格");
break;
case 'F' :
System.out.println("你需要再努力努力");
break;
default :
System.out.println("未知等级");
}
System.out.println("你的等级是 " + grade);
}
}
如果 case 语句块中没有 break 语句时,JVM 并不会顺序输出每一个 case 对应的返回值,而是继续匹配,匹配不成功则返回默认 case。
如果当前匹配成功的 case 语句块没有 break 语句,则从当前 case 开始,后续所有 case 的值都会输出,如果后续的 case 语句块有 break 语句则会跳出判断。
语法:
while( 布尔表达式 ) {
//循环内容
}
代码示例:
public class Test {
public static void main(String args[]) {
int x = 10;
while( x < 20 ) {
System.out.print("value of x : " + x );
x++;
System.out.print("\n");
}
}
}
输出结果
value of x : 10
value of x : 11
value of x : 12
value of x : 13
value of x : 14
value of x : 15
value of x : 16
value of x : 17
value of x : 18
value of x : 19
对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。
do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。
语法:
do {
//代码语句
}while(布尔表达式);
代码示例:
public class Test {
public static void main(String args[]){
int x = 10;
do{
System.out.print("value of x : " + x );
x++;
System.out.print("\n");
}while( x < 20 );
}
}
输出结果
value of x : 10
value of x : 11
value of x : 12
value of x : 13
value of x : 14
value of x : 15
value of x : 16
value of x : 17
value of x : 18
value of x : 19
虽然所有循环结构都可以用 while 或者 do…while表示,但 Java 提供了另一种语句 —— for 循环,使一些循环结构变得更加简单。
for循环执行的次数是在执行前就确定的。
关于 for 循环有以下几点说明:
语法:
for(初始化; 布尔表达式; 更新) {
//代码语句
}
代码示例:
public class Test {
public static void main(String args[]) {
for(int x = 10; x < 20; x = x+1) {
System.out.print("value of x : " + x );
System.out.print("\n");
}
}
}
输出结果
value of x : 10
value of x : 11
value of x : 12
value of x : 13
value of x : 14
value of x : 15
value of x : 16
value of x : 17
value of x : 18
value of x : 19
Java5 引入了一种主要用于数组的增强型 for 循环。
Java 增强 for 循环语法格式如下:
语法:
for(声明语句 : 表达式)
{
//代码句子
}
**声明语句:**声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
**表达式:**表达式是要访问的数组名,或者是返回值为数组的方法。
代码示例:
public class Test {
public static void main(String args[]){
int [] numbers = {10, 20, 30, 40, 50};
for(int x : numbers ){
System.out.print( x );
System.out.print(",");
}
System.out.print("\n");
String [] names ={"James", "Larry", "Tom", "Lacy"};
for( String name : names ) {
System.out.print( name );
System.out.print(",");
}
}
}
输出结果
10,20,30,40,50,
James,Larry,Tom,Lacy,
break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。
break 跳出最里层的循环,并且继续执行该循环下面的语句。
语法:
break;
代码示例:
public class Test {
public static void main(String args[]) {
int [] numbers = {10, 20, 30, 40, 50};
for(int x : numbers ) {
// x 等于 30 时跳出循环
if( x == 30 ) {
break;
}
System.out.print( x );
System.out.print("\n");
}
}
}
输出结果
10
20
continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。
在 for 循环中,continue 语句使程序立即跳转到更新语句。
在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。
语法:
continue;
代码示例:
public class Test {
public static void main(String args[]) {
int [] numbers = {10, 20, 30, 40, 50};
for(int x : numbers ) {
if( x == 30 ) {
continue;
}
System.out.print( x );
System.out.print("\n");
}
}
}
输出结果
10
20
40
50
在6.4中,提到了三种循环结构
1.单while循环
2.do…while循环
3.for循环
1、在这三种循环之中,do…while循环是先执行一次内容,然后再校验是否符合条件。
2、for循环中小括号内定义的变量只有在循环中可以使用。
后面部分的笔记还没完成