java学习笔记

JAVA 学习笔记

1. HelloWorld

//HelloWorld.java
class HelloWorld{
	public static void main(String[] args){
		System.out.println("Hello World!");
	}
}
/*
1.每个java文件有且只有一个main方法
2.每个java文件可以包含多个class,但只能有一个class有main方法
3.运行方法 找出java、javac的安装路经 -> 通过cmd切换到安装路经 -> javac ***.java 进行编译 -> java 编译后的带有main方法的class文件
4.同一个java文件如果有多个class,每个class将会被单独编译成一个class文件
5.同一个java文件下,不能有命名相同的class
5.语句结束用;
*/

2.命名习惯

	* 包名一般全小写 eg: xxxyyyzzz
	* 类名、接口名首字母大写 eg:XxxYyyZzz
	* 变量、方法名首字母不大写,其余单词首字母大写 eg:xxxYyyZzz
	* 常量名所有字母均大写,并用_隔开 eg:XXX_YYY_ZZZ

3.变量

数据类型关键词备注
整型int4字节, − 2 31 -2^{31} 231 ~ 2 31 2^{31} 231-1
字节型byte1字节,-128 ~ 127
短整型short2字节, − 2 15 -2^{15} 215 ~ 2 15 2^{15} 215-1
长整型long8字节, − 2 63 -2^{63} 263 ~ 2 63 2^{63} 263-1,必须以L或l结尾,否则默认为int
单精度float4字节,-3.403E38 ~ 3.403E38,仅能保留7位小数,需以f或F结尾,否则默认为double
双精度double8字节,-1.798E308 ~ 1.798E308,保留15位小数 精度详解
字符char2字节,字符非字符串,只能是一个字符,用单引号’’,‘a’
布尔型booleantrue or false
class引用数据类型
接口interface引用数据类型
数组[]引用数据类型
字符串String引用数据类型,用双引号"hello world",可以和基本数据类型做计算
long long_type = 12345L;
float float_type = 123.4f;
String s = "hello";
int i = 1234;
String s2 = s + i;
//i被强制转换为String类型
/*
1.变量必须先声明后使用
2.变量有作用范围
3.同一个作用域内不可定义同名的变量
   eg: int age = 12;
       int age = 12;(错)
       
*/
  • 自动类型提升
	byte b = 1;
	int i = 177;
	int i2 = i1 + b;
	//不同数据类型之间的运算需要用“更高级类型”来存,防止数据溢出
	byte < short < int < long < float < double
	// byte、short、char三者之间(包括自己跟自己)作运算,需用int型接收
  • 强制类型转换
//自动类型提升的逆运算
//强转符
double df = 123.33;
int i = (int)df;

4.逻辑运算符

关系运算符备注
逻辑与&a&b,a为false时仍继续判断b的真假
逻辑或|a|b,a为真时仍判断b的真假
逻辑非
短路与&&a&&b,a为false时则结束判断
短路或 ∥ \| a ∥ \| b,a为真时则结束判断
逻辑异或^a,b同真或同假时为false;否则为true
boolean bool = false;
int num1 = 123;
int num2 = 123;
if(bool & (num1 ++ > 0)){

}

if(bool && (num2 ++ > 0)){

}

//此时num1 = 124;num2 = 123;

5.三元运算符

(条件表达式)?表达式1:表达式2
条件成立则执行表达式1,否则执行表达式2,用于简化if-else

int num1 = 123;
int num2 = 234;
int max = (num1 > num2)?num1:num2
//num1和num2不一定需要相同数据类型,但必须是满足可强制转换的类型

6.程序流程控制

  • if-else
if(条件1){
  code1;
}
else if(条件2){
  code2;
}
else{
  code3;
}
  • switch case
switch(表达式){
case 常量1:
   code1;
   //break;
case 常量2:
	code2;
	//break;
...
case 常量n:
	coden;
	//break
default:
	codeX;
}
/*
当swtich的表达式与case中的常量一致时,程序开始执行常量对应的case内部的code部分
如果不加break跳出,则程序会继续执行后续的所有case内的code,包括default,加break则只执行表达式=常量的case
如果表达式与所有case的常量值均不匹配,则执行default
code部分可以是多行,无需用{}
*/

7.循环

  • for循环
/*
for(初始化条件;循环条件boolean;循环迭代条件){
	循环体
}
先判断是否满足循环条件,再执行循环体
*/
int sum = 0;
for(int i = 0;i < = 100; i++){
	sum += i;
}
//变量i只在for循环内有效,for循环一结束则自动清除
  • while循环
/*
while(循环条件){
	循环体
	循环迭代条件
}
先判断是否满足循环条件再执行循环体
*/
int i = 1;
int sum = 0:
while(i <= 100){
	sum += i;
	i += 1;
}
  • do-while循环
/*
do{
	循环体
	循环迭代条件
} while(循环条件);
先执行循环体,再判断循环条件是否成立
至少能执行一次循环体 	
*/
int i = 1;
int sum = 0;
do{
	sum += i;
} while(i <= 100);


8.break与continue

/*
break用于switch和循环结构中,用于跳出(结束)当前循环或switch结构
continue用于循环结构,用于跳过当次循环(未结束,只是改变循环条件)
*/
sum += 0;
for(int i = 1; i <= 100; i ++){
	if(i % 2 == 0){
		continue;
	}
	sum += i;
}
//计算1-100中基数的和
int sum += 0;
for(int i = 1;i <= 100; i++){
	if(i % 2 == 0){
		break;
	}
	sum += i;
}
//sum = 1;


/*
嵌套循环中的用法
break:正常情况下,在嵌套循环中,break只会跳出其所在的当层循环,如需要让break跳出指定的循环层,需要在循环关键词之前加上标记
continue与break原理类似
*/
int sum = 0;
label1:for(int i = 1; i <= 100; i++){
	for(int j = 1; j <= 100; j ++){
		if(j > 10) break label1;
		sum += j;
	}
}
//sum = 55

int sum = 0;
label1:for(int i = 1; i <= 100; i++){
	for(int j = 1; j <= 100; j ++){
		if(j > 10) continue label1;
		sum += j;
	}
}
// sum = 5500

9.一维数组

  • 数组中的概念
    1.数组名
    2.元素
    3.索引
    4.长度

  • 数组的特点
    1.数组是有序的
    2.数组中的元素必须是相同的数据类型,可以是基本数据类型也可以是引用数据类型
    3.创建数组时,底层会为数组开辟连续的存储空间
    4.数组一旦创建,其长度也就固定了,不能修改

  • 默认初始化值

数据类型默认值
int0
float0.0
double0.0
char0(‘’\0000’ ascii第0位)
booleanfalse
Stringnull(引用数据类型均为null)
1.数组的声明与初始化
int [] array; //声明
array = new int[]{12,3,4,2};//静态初始化,此时array长度固定为4
int[] array = new int[5];//动态初始化一个长度为5的数组,指定array的长度,暂未给array赋值

2.获取数组指定位置元素
array[0];//获取第一个元素
arraty[1];//获取第二个元素
array[1] = 12345;

3.获取数组的长度
array.length;

4.遍历数组
for(int i = 0; i < array.length; i ++){
	array[i];
}

二维数组

  • 多维数组的本质是一维数组嵌套一维数组
1.数组的声明与初始化
int [][] array; //声明
array = new int[][]{{12,33},{4,2}};//静态初始化,数组的列可以不一致
int[][] array = new int[5][4];//动态初始化1,数组的列必须一致
int[][] array = new int[5][];//动态初始化2,此时数组的列可以不一致
2.获取数组指定位置元素
array[0];//获取第一个元素
arraty[1];//获取第二个元素
array[1] = 12345;

3.获取数组的长度
array.length;

4.遍历数组
for(int i = 0; i < array.length; i ++){
	array[i];
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值