Java基础语法

day01

简述java的编译及运行工程
java文件从源文件中创建到编译运行的主要过程
  1. 源文件由编译器编译成字节码文件(ByteCode)

  2. 字节码文件由java虚拟机解释运行

    JDK:java Development kit(JRE+开发工具)
    JRE:java Runtime Envirment(JVM+系统类库)
    JVM:java Virtual Machines(Java虚拟机)
    运行一个java程序所需要的最小环境为JRE,开发一个Java程序所需的最小环境为JDK

针对不同的操作系统有不同的JVM
java的可移植性:
  1. 源代码的可移植性
    在不同的CUP,操作系统,或java编译器上,产生同样的结果

  2. CPU的可移植性
    由于Java编译器产生的目标代码是正对一种不存在CPU的运行环境–JVM

  3. 操作系统的可移植性
    由于Java提供一套与平台无关的库函数(lang,util…)

day02

标识符
标识符是用来给变量,类,包以及方法来命名的
  1. 标识符必须要以字母下划线(_),美元符号($)开头
  2. 标识符其他部分可以使字母,数字,下划线,美元符号的任意组合
  3. Java标识符大小写敏感,且长度无限制
  4. 标识符不可以是Java的关键字
标识符的使用规范
  1. 表示类名的标识:每个单词的首字母大写,eg:Student,DormBuild…
  2. 表示方法和变量的标识符:第一个单词小写,第二个单词开始首字母大写(驼峰命名法),eg:setName(),getName()…
八大基本数据类型

byte,short,int,long
整型:表示没有小数部分的数值,允许负值

类型各种封装类占用空间(字节)字符取值
byteByte18-128~+127
short短整型Short216-32768~+32767
int整形Integer432-2^31 ~+2^31-1(约21亿)
long长整形Long864-2^63 ~+2^63-1
float,double
浮点型:带小数的数据
类型各种封装类占用空间(字节)字符取值
float单精度Float432-3.403E38~+3.403E38
double双精度Double864-1.798E308~+1.798E308

char
字符型:在内存中占两个字节,在Java中使用单引号来表示字符常量.eg:‘A’

类型各种封装类占用空间(字节)字符取值
fchar字符Character2160~65535

boolean
布尔型:有且只有两个常量,true,false.在内存中占一个字节,不可以用0或非0的数据代替true或false;

变量
程序运行期间,内容可以改变的量

		变量的初始化
		数据类型 变量名称;//创建了一个变量
		变量名称 = 数据值;//赋值,将做右边的数据值赋值给左边的变量
		
		数据类型 变量名称 = 数据值;//创建了一个变量,同时将数据值付给变量

注意事项:

  1. 如果创建多个变量,变量名称不可重复,若创建同名的同名的变量名称,必须保证它们的作用域互不相交
  2. 对于float和long类型来说,字母后缀不能丢,否则,会默认为double类型或者是int类型
  3. 对于byte类型和short类型的变量,赋值的数据不能超过其范围,佛足额会出现编译错误,另外,在运算时不要超过其范围,否则发生溢出,损失精度
  4. 初始化的变量一定要进行赋值,不能直接使用,否则会出现编译错误,赋值之后才能使用
  5. 在变量运算中,会默认的将数值转化为int类型

强制转化

		数据类型 变量名 = (数据类型)被转数据;
		byte a = 2;
		byte a = 3;
		byte c = (byte)(a+b);

注意事项

  1. 强制转换一般不推荐使用,因为有可能发生精度损失,数据溢出等
  2. byte/short/char,运算时,会被提升为int类型
  3. char类型,可以默认为整数.例:‘0’–>48
  4. boolean类型不能发生数据类型的转换

ASII编码表
‘0’–>48,‘A’–>65,‘a’–>97

day03

运算符
  1. 算术运算符(+(加),-(减),*(乘),/(除),%(取余))
    注意:a++,++a;
    前加加:先使用,再自加
    后加加:先自加,再使用
		int a = 2;
		int b = a++ + ++a;//2+4
		int c = (a++)+(++a);//4+6
  1. 关系运算符(>,<,>=,<=,==,!=,)

  2. 位运算符(&(按位与),^(按位异或),|(按位或),>>(按位右移),<<(按位左移),>>>(逻辑右移))

		int a = 2;			//0010
		int b = 3;			//0011
		int c = a & b;		//0010
		int d = a ^ b;		//0001
		int e = a | b;		//0011
		int g = a << 2;		//1000

>>与>>>的区别
‘>>’:如过该数为正数,则高位补0,若为负,则高位补1
‘>>>’:若为正数,则高位补0,而该数为负数,高位同样补0

		int a2 = -2;			//1111 1110
		int f = a2>>3;			//1111 1111
		int h = a2>>>3;			//0001 1111
  1. 逻辑运算符(&&(逻辑与,并且),||(逻辑或,或者),!(逻辑非,取反))
    &&:连接时,前面的条件为false,即为false,后面语句不执行
    ||:连接时,前面的语句为true,后面语句不执行
    注意事项: 先做关系运算,再做逻辑运算
  2. 赋值运算符(=,扩展运算符(+=,-=,*=,/=,%=))
		int a = 1 ;
		注意:b *= 4; ==>int b = (int)(b*4);
  1. 三目运算符(三元运算符)
		数据类型 变量名 = 布尔表达式 ? 结果1 : 结果2;
		int a = 1 , b = 2 ;
		int c = a > b ? a : b;

day04

分支结构

if结构:一条路

		if结构:一条路
			if(条件表达式){
				语句块
			}
		if...else if..结构:多条路
			if(条件表达式){
				语句块;
			} else if (条件表达式){
				语句块;
			}
		switch...case...结构:多条路
			switch(条件表达式){
				case 1:
					语句块;
					break;
				...
				default:
					语句块;
			}

优点:效率高,结构清晰.
缺点:必须整数,且相等

循环结构
  1. while循环结构:先判断再执行
		变量初始化表达式;
		while(条件表达式){
			循环体;
			步进表达式;
		}
		int i = 1 ;//变量的初始化
		while(i <= 12){//条件表达式
			salary += 180;//循环体
			System.out.println(i+"月后的工资为"+salary);
			i++;
		}
  1. do…while…循环:先执行一次循环体,再判断
		变量的初始化表达式
		do{
			循环体;
			步进表达式;
		}while(条件表达式);
		int i = 1;//变量的初始化
		do{
			salary += 180;//循环体
			System.out.println(i+"月后的工资为"+salary);
			i++
		} while(i < 12);//条件表达式

day05

循环结构
  1. for循环
		int sum = 0;
		for(int i = 1; i <= 100; i++){
			sum += i; 
		}
		System.out.println("总和:"+sum);
		i		循环			sum
		1		true			1
		2		true			1+2
		3		true			1+2+3
		4		true			1+2+3+4
		...
		100		true			1+2+3+4+...+100
		101		false		

总结:

  1. while…:"当"循环
  2. do… while:"直到"循环
  3. for:与次数有关
break与continue的区别
break:跳出循环
		for(int i = 1; i <= 5; i++){
			if(i == 4){
				break;
			}
			System.out.println(" " + i);
		}
		输出结果: 1 2 3
continue:跳过本次循环
		for(int i = 1; i <= 5; i++){
			if(i == 4){
				continue;
			}
			System.out.println(" " + i);
		}
		输出结果: 1 2 3 5 
嵌套循环

循环中套循环,一般多行多列,外层控制行,内层控制列,外层走一次,内层走所有次.
注意:循环次数越少越好,不要超过三层.

九九乘法表:

		for(int i = 1; i <= 9; i++){
			for(int j = 1; j <= i; j++){
				System.out.print(j + "*" + i + "=" + j * i + "\t");
			} 
			System.out.println();
		}
程序 = 数据结构 + 算法
  1. 算法:解决问题的流程(顺序,分支,循环)
  2. 数据结构:将数据按照某种特定的结构来保存
数组

相同数据类型元素的容器.(是一种引用数据类型,数据类型相同,数组长度不可变,初始化后,若没有赋值,则自动生成默认值0或null)
数组的初始化

  1. 动态初始化
		数据存储的数据类型[] 数组名字 = new 数组存储的数据类型[数组的长度];
  1. 静态初始化
		数据类型[] 数据名 = new 数据类型[]{元素1, 元素2, ...};
		//静态简写
		数据类型[] 数据名 = {元素1, 元素2, ...};
		int[] arr1 = new int[10];
		int[] arr2 = new int[]{1, 2, 3};
		int[] arr3 = {3, 4, 5};
		int[] arr4;
		arr4 = new int[4];
  1. 数组的访问:
		int[] arr1 = {1, 2, 3, 4, 5};
		int[] arr2 = {5, 6, 7, 8, 9, 10};
		int[] arr =new int[2];
		
		//数组的赋值(通过下标,来赋值)
		arr[0] = 0;
		arr[1] = 1;
		
		//数组的长度
		int len = arr1.length;
		System.out.println("arr1的长度:" + len);
		
		//遍历数组
		for (int i = 0; i < arr1.length; i++) {
			System.out.print(" " + arr1[i]);
		}
		System.out.println();
		
		//数组的复制:arr1-->arr2
		System.arraycopy(arr1, 0, arr2, 1, arr1.length);
		//arr的长度+1,现在为3
		arr = Arrays.copyOf(arr, arr.length+1);//扩容
		
		//数组排序(升序)
		Arrays.sort(arr2);

day06

方法:函数过程
  1. 封装了一段特定的业务逻辑功能
  2. 方法尽可能的独立,一个方法只干一件事
  3. 方法可以被反复多次使用
  4. 减少代码的重复,有利于代码维护,有利于团队协作
方法的定义
	修饰符 返回值类型 方法名(参数列表){
		业务逻辑
	}
方法的调用
  1. 无返回值:方法名(有参传参);
  2. 有返回值:数据类型 变量名 = 方法名(有参传参);
return
  1. return 变量;
    结束方法的执行
    返回结果给调用方

  2. return;
    结束方法的执行(只能用在无返回值的方法中)
    注意事项
    无返回值:将返回值类型设计为void
    有返回值:将返回值类型设计为具体的数据类型

public class Demo2 {
	public static void main(String[] args) {
		print();
		print(3);
		int rand = rand();
		int rand2 = rand(10);
		System.out.println(rand + "," + rand2);
	}
	//无参无返回值
	public static void print() {
		System.out.println("你好!");
	}
	
	//有参无返回值
	public static void print(int a) {
		System.out.println("打印的值为:" + a);
	}
	
	//无参有返回值
	public static int rand() {
		return (int)(Math.random() * 100)+1;
	}
	
	//有参有返回值
	public static int rand(int a) {
		return (int)(Math.random() * a) + 1;
	}
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值