JAVA入门

注释

注释定义

解释说明的文字

作用

1.对你的代码进行解释说明
2.便于后期维护

注意

1.注释的内容不会被编译
2.如果出现乱码的问题–>修改文件的编码格式为gbk

分类

1.单行注释:
作用域: 作用于当前行
嵌套: 可以嵌套单行注释,不可以嵌套多行注释和文档注释
位置: 行的上面,或者行尾
2.多行注释:
作用域:多行内有效
嵌套: 可以嵌套单行注释,不可以嵌套多行注释和文档注释
位置: 类的上面或者方法的上面
3.文档注释:
作用域:多行内有效
嵌套: 可以嵌套单行注释,不可以嵌套多行注释和文档注释
位置: 类的上面或者方法的上面

文档注释可以存在于类的api文档中

标识符

java中一切起名字 的地方都是标识符

命名规则

1.只能由数字,字母,下划线,美元符号$任意组合而成,但是数字不能开头
2.标识符是严格区分大小写
3.关键字不能作为标识符使用

关键字:再java中有一些具有自己的使用方式|使用途径|作用,这些词就是关键字 都是小写|工具中都有特殊颜色
保留字:java中有一些词将来有可能有自己使用用途或特殊含义,这些词就是保留字 goto const
一般再说关键字时候也包含保留字

命名规范

1.见名之意
2.驼峰命名
包: 全部小写
多级包:每个级别之间使用.进行分隔
类|接口: 每个单词g首字母大写
方法|变量: 第一个单词全部小写,第二个单词开始首字母大写
常量: 全部大写

变量

再程序执行过程中,其值可以发生改变的量,在内存中开辟一块空间,存储指定类型的数据

语法

java是一个强类型的语言 :声明变量的时候就要先确定类型

常用的数据类型: int整数 double小数 String字符串"" boolean布尔类型 char字符型’’

1.声明的同时赋值
数据类型 变量名 = 赋值;
2.先声明 后赋值
数据类型 变量名; //声明
变量名=赋值; //赋值

3.同时声明多个变量
=是java中唯一一个自右向左运算的符号

变量关注的点

1.数据类型
2.变量名(标识符的规则|规范)
3.值
4.作用域 {}

使用变量时需要注意的问题(1.输出 2.赋值 3.运算):
1.变量必须已声明
2.变量必须已赋值

变量的分类

1.成员变量|实例变量 :只声明不赋值存在默认值,类中方法外|语句块外定义的变量
int->0 double->0.0 字符串->null char->’ ’ boolean->false
2.局部变量: 使用前必须声明并且赋值
方法中语句块中定义的变量就是局部变量

常量

在程序运行过程中其值不能发生改变的量

分类

  1. 字面值常量
  • 整数常量
  • 小数常量
  • 布尔常量
  • 字符常量
  • 字符串常量
  1. 自定义常量
    被final修饰的变量为常量

数据类型

基本数据类型

四类八种

整形

表示形式

表示名称

范围

大小(字节)

位(bit)

字节型

byte

[-128,127]

1

8

短整型

short

[-32786,32767]

2

16

整形

int

±21亿

4

32

长整形

long

很大

8

64

浮点型

表示形式

表示名称

精度

大小(字节)

位(bit)

float

单精度

小数点后7位

4

32

double

双精度

小数点后15位

8

64

字符型

表示形式

表示名称

精度

大小(字节)

位(bit)

char

字符型

[0,65535]

2

16

字符型的表示形式:
''中给单个字符 ‘1’ ', ’ ’
0~65535 根据Unicode字符集进行确认 去 ascii

当字符型参与运算的时候,先转为10进制的数再去参与运算

布尔型

表示形式

表示名称

位(bit)

boolean

布尔

1

引用数据类型

使用步骤
  1. 导包,import 关键字
  2. 创建引用数据类型的变量|引用
    引用数据类型 变量名 = new 引用数据类型();
  3. 使用功能
    变量|引用.功能名字();
  4. 关闭资源
    变量.close();
    一定要在当前类中使用完毕之后再去关闭,否则重新开启也不能使用了
Scanner类
  1. 导包:import java.util.Scanner;
  2. 创建引用数据类型的变量|引用
  3. 变量|引用.功能名字();
    功能名字
    next类型:nextInt() |nextByte() | nextDouble()
    next() 接收字符串类型的数据
    以上一系列的next功能,从有效字符开始接收,遇到空格,tab接不接收了,直到遇到enter结束功能 enter不会接收
    nextLine() 接收一整行的数据,接收enter结束,enter会被接收
  4. 关闭资源
import java.util.Scanner;
public class Scanner03{
	/**主方法*/
	public static void main(String[] args){
		//1.导包
		//2.创建Scanner的变量|引用
		Scanner sc=new Scanner(System.in);
		//3.使用功能
		//int i=sc.nextInt();
		//int i=sc.nextByte();
		
		String s=sc.next();
		System.out.println("next()="+s);
		
		//处理系列next功能遗留的enter键
		sc.nextLine();
		
		String str=sc.nextLine();
		System.out.println("nextLine()="+str);
		
		//关闭
		sc.close();
		//Scanner sc2=new Scanner(System.in);
		//String sss=sc2.next();
	}
	
}
Random类

产生随机数

功能函数:

  • nextInt() 随机产生一个int范围内的随机数
  • nextInt(int n) 随机产生一个 [0,n)整数
  • nextDouble() 产生[0,1)之间的随机小数

产生给定范围内的随机数

[min,max) ran.nextInt(max-min)+min;
[min,max] ran.nextInt(max-min+1)+min;

接口
数组

数据类型转化

从小到大排序

byte -> short-> int -> long-> float ->double

  1. boolean不参与数据类型转化
  2. 自动数据类型转化
    从小范围类型的数据->大范围类型的数据
    多个类型的值参与运算,最终结果的数据类型默认自动提升为最大的参与运算的数据的类型
    多个数据的类型,如果只有byte,short,char任意组合,最终的结果会自动提升成为int
    byte,short,char赋值,只要是在其范围内的常量值都可以成功赋值
  3. 强制数据类型转化
    小范围数据类型 变量名 = (小范围数据类型)大范围类型的数据;
    可能会有损失

转义字符

使用转义字符让一些具有特殊含义的字符表示其本身
转义字符从\开始 +要转义的字符

"

\

\t:制表符 : 一个制表符代表8个空格 一个汉字占2个空格,一个字母占1个空格

如果制表符位置前面的内容满足制表符的整数倍,重开一个制表符位,如果不满,就不全一整个制表符位

\n:换行符

\b:退格符

\r:回到行首

运算符

操作数: 运算符左右两边的数就是操作数
表达式: 运算符连接左右两边的操作数叫做表达式
语句: ;代表一个语句的结束
一元运算符|单目运算符:操作数只有一个的运算符 ++ –
二元运算符|双目运算符:操作有两个 + - * /
三元运算符|三目运算符:条件运算符

运算符优先级

() 最高

单目 算数 位 关系 ,逻辑 三目 后赋值

算数运算符

+,- *,/,%,++,–

取余%:取余数 当第一个操作数小雨第二个操作数的时候,值就为第一个操作数

++ –
a++ ==> a=a+1;
++a ==> a=a+1;
1.操作自己:++/–只影响自己的值,不影响其他值
++操作数的前面还是后面结果都是自身+1
–操作数的前面还是后面结果都是自身-1

2.操作别人:1)参与运算 2)赋值 3)打印
+±-在操作数的前面,都是先自身+1|-1然后在参与运算
+±-在操作数的后面,都是先参与运算,再自身+1|-1

一个变量在同一时刻只能指向一个值

赋值运算符

基础赋值运算符

=

  • 优先级最低
  • 唯一一个自右向左运算
扩展赋值运算符

+= -= *= /= %=

a+= 1 ->a=a+1

  • 优点
    提高执行效率,否则编译器也会把数据优化成为扩展赋值运算符的形式,能够成倍提高效率
    帮强制类型转换
  • 缺点
    不直观

比较运算符

也叫关系运算符,结果都是boolean类型

< > >= <=

只能比较byte,short,int,long,float,double,char

== !=

可以使用基本数据类型|引用数据类型

逻辑运算符

操作数是值为boolean类型的表达式
& 与: 两边都为true结果才为true,一个为false结果为false
| 或: 一个为ture就是true,两个都为flase才是false
! 非: 取反 !true–>false
^ 亦或: 两个操作数相同为false,不同为true

短路的作用:如果第一个操作数就已经能够决定最终的结果了,第二个表达式不再执行

&&

||

public class Operator12{
	/**主方法*/
	public static void main(String[] args){
		System.out.println("---------------&---------------");
		System.out.println(true & false);  //false
		System.out.println(true & true);	//true
		System.out.println(false && true);	//false
		System.out.println(false & false);  //false
		System.out.println("---------------|---------------");
		System.out.println(true | false);  //true
		System.out.println(true | true);	//true
		System.out.println(false | true);	//true
		System.out.println(false | false);  //false
		
		System.out.println("---------------!---------------");
		System.out.println(!false);  //true
		System.out.println(!true);	//false
		
		System.out.println("---------------^---------------");
		System.out.println(true ^ false);  //true
		System.out.println(true ^ true);	//false
		System.out.println(false ^ true);	//true
		System.out.println(false ^ false);  //false
		
		//System.out.println(3>4 & 3/0==0);	//true
		System.out.println(3>4 && 3/0==0);	//true
	}
	
}

常使用短路

条件运算符

格式

条件表达式 ? 值1: 值2;

注意事项
  1. 条件表达式值为boolean类型的表达式 true,false
  2. 如果结果为true,最终的结果取值1
  3. 如果结果为false,最终的结果取值2
  4. 最终一定可以得到一个结果
public class Operator01{
	/**主方法*/
	public static void main(String[] args){
		//判断两个数的最大值
		int a=5;
		int b=7;
		int result= a>b ? a : b;
		System.out.println(result);
		
		//求一个值是否为偶数  
		String str=a % 2 == 0 ? "偶数" : "奇数";
		System.out.println(str);
		
	}
	
}

位运算符

把操作数转为二进制,然后根据不同的位运算符的逻辑对二进制的操作数进行运算,最后得到的结果,转为十进制

  1. & : 两个2进制的操作数,同一位数的两个数如果有一个为0结果就为0,两个都为1才是1
  2. | : 两个2进制的操作数,同一位数的两个数如果有一个为1,两个都为0才是0
  3. ^ : 两个2进制的操作数,同一位数的两个数如果相同为0,不同为1
  4. << 左移 :把第一个二进制的操作数向做移动第二个操作数个位数,空余的位数补0,最终得到二进制的值–>转为十进制
    m << n ==> m*2^n

右移 :把第一个二进制的操作数向右移动第二个操作数个位数,移动出的位数不要,只保留剩下的位数的值–>转为十进制
m >> n ==> m/2^n