【java】基础篇:java知识点总结一

大家好,我是皮皮猫吖!

每文一言:革命还未结束,同志仍需努力。


本篇文章:

好久没有更新文章了,现在大三,趁着寒假进入系统的学习,从今天开始更文。

本篇文章:主要是关于java基本语法的学习,主要是从java入门到循环结构的相关内容分享。

正文如下:

一、常用的命令行(DOS命令行)
切换盘符:d:
创建文件夹:md 文件夹名
进入文件夹:cd 文件夹名
返回上一级:cd..
返回根目录:cd/
删除文本:del 文本名
删除文件夹:rm 文件夹
退出命令行:exit
二、JDK、JRE、JVM的关系
  • JDK 开发工具包:JRE+java开发工具包
  • JRE运行环境:JVM+JavaSE标准类库
三、JDK安装:
  • 傻瓜式安装(下一步,下一步)
  • 配置环境变量(系统全局环境变量path中添加:jdk的bin目录)
四、工具(配置Eclipse)
配置文字大小:ctrl + 加号 字体变大
ctrl + - 字体变小
五、Hello World
  • 。java文件–>.class文件–>编译成功
  • 如果编译不成功的话:可以删除classPath环境变量
  • 注意:
    • 在一个.java文件中,可以声明好多个class。但是,只允许存在一个类声明为public,声明为public的类必须是跟.java名同名的class类
  • 程序的入口是main()方法
package preview.immort.one;

public class Preview_1 {
//	复习代码一:
//	经典:输出hello world
//	main方法()
//编写:保存在.java文件中
//编译:使用java.exe进行编译,得到.class文件
//运行:运行编译得到的.class文件
	public static void main(String[] args) {
		//标准的输出代码
		System.out.println("hello world");
	}
}

  • 注释
//单行注释
/*多行注释:不可嵌套使用*/
/**
	文档注释
	@author ppm
	@version 1.0
*/
六、命名规范
  • 包名:所有字母小写
  • 类名:驼峰式,XxxYyyZzz
  • 变量名:第一个小写,其他大写xxxYyyZzz
  • 常量名:全部大写,可用下划线连接
七、变量
  • 变量使用前,需要先定义
  • 变量需要在定义的作用域中使用,超出作用域使用变量,就会报错
  • 同一片作用域下,不允许声明名字相同的变量
public static void main(String[] args) {
	int age = 12;
    //第二次声明变量:报错
    int age = 13;
	System.out.println(age);
	//使用其他作用域中的数据:报错
	System.out.println(name);
    //未声明变量使用:报错
    System.out.println(gender);
}

public static void test() {
	String name;
	
}
八、变量类型
基本数据类型:
  • 整型:byte(1个字节),short(2个字节),int(4个字节),long(8个字节)
  • ***注意:***Java默认的整性数据类型是int类型。byte的取值范围为 -128—127,容易溢出访问。使用long数据类型的时候,数据的尾部需要加上L,标识该数据为long类型的数据。
public static void main(String[] args) {
	byte b1 = 12;
	byte b2 = 127;
	System.out.println(b1);
	System.out.println(b2);
	
	short s1 = 123;
	System.out.println(s1);
	
//	声明long类型的数据,尾部需要加上L
	long l1 = 121321L;
	System.out.println(l1);
}
  • 浮点型:float(4字节),double(8字节)
  • 注意: Java默认的浮点数据类型是double。使用float类型的时候,尾部需要加上f(不加的话,相当于double转换为float,精度丢失,报错)
  • floa可以表示的数据比long表示的数据大
public static void name() {
	//声明float数据的后面需要加上f
	float f1 = 12.34f;
	double d1 = 1234.6;
	System.out.println(f1);
	System.out.println(d1);
}
  • 字符型:char(一个字符=2个字节)
  • 可中文字符,可英文字符
public static void test() {
	char c1 = 'a';
	char c2 = '中';
	char c3 = '\u0234';
	System.out.println(c1);
	System.out.println(c2);
	System.out.println(c3);
}
  • 布尔型:boolean
public static void test1() {
	boolean b1 = true;
	boolean b2 = false;
	System.out.println(b1);
	System.out.println(b2);
}
  • 自动类型提升:
    • byte、short、char—>int—>long—>float—>double
    • 注意: byte、short、char之间相互转换时,转换成int类型以上的数据类型不会报错,int类型小的会报错
//自动类型提升
public static void test2() {
	byte b1 = 2;
	short s1 = b1;
	
//	编译不通过
//	short s2 = s1 + b1;
	
	char c1 = 'c';
	
	//编译不通过
//	char c2 = c1 + b1;
	//编译不通过
//	char c2 = c1 + s1;
	
	int i1 = b1 + s1;
	System.out.println(i1);
	System.out.println(b1);
	System.out.println(s1);
}
  • 强制类型转换:
    • 强转符:()
    • short,byte接收超限的int数据
  • 注意:
    • float定义的时候,尾数加f(默认的浮点常量是double型,不用强转符转换,精度丢失,编译错误)
    • 当byte、short数据类型,进行变量算术运算常量的时候,会发生精度丢失错误(默认整型常量为int,进行算术运算,精度丢失)
//精度损失
public static void test3() {
	//1. 丢失浮点精度
	double d1 = 123.5676;
	int i1 = (int)d1;
	System.out.println(i1);
	
	//2. 丢失int精度
	int i2 = 129;
	byte b1 = (byte)i2;
	System.out.println(b1);
	
	//编译失败,超过byte最大值
//	byte b2 = 129;
	long l1 = 1234L;
	
	//大整数类型,超过int的范围
//	long l2 = 1212424124124;
	long l2 = 1212424124124L;
	
	//浮点类型超限
	//默认的浮点类型都是double类型,double->float,精度丢失,报错
	float f1 = 12.34f;
	
	byte b3 = 12;
	//默认的常量都是int型,进行加减的时候,需要判断是否存在精度丢失问题
//	b3 = b3 + 1;
		
}
  • String类型
    • 引用数据类型;可以和其他8种基本数据类型进行连接“+”,得到的还是字符串
//string数据类型
public static void test4() {
	String s1 = "123";
	String s2 = "";
	String s3 = "1";
	System.out.println(s1);
	
	boolean b1 = true;
	s1 += b1;
	System.out.println(s1);
}
引用数据类型:
  • 类:class
  • 接口:Interface
  • 数组
进制:
//进制
//二进制:0b开头
//八进制:0开头
//十六进制:0x开头
public static void test5(){
	int i1 = 0b10;
	int i2 = 0123;
	int i3 = 0xef;
	System.out.println(i1);
	System.out.println(i2);
	System.out.println(i3);
}
九、算术运算符
  • 类型提升+取余值的符号
public static void main(String[] args) {
	int i1 = 12;
	int i2 = 5;
	double result;
	result = i1 / i2;
	
	//1.0 * ?对整型数据,进行提升,提升为double类型
	result = 1.0 * i1 / i2; 
	System.out.println(result);
	
	//取模号%:通过取余得到的值的符号和被除数是一样的
	int i3 = 12;
	int j3 = 5;
	System.out.println(i3%j3);
	
	i3 = -12;
	System.out.println(i3%j3);
	
	i3 = 12;
	j3 = -5;
	System.out.println(i3%j3);
	
	i3 = -12;
	j3 = -5;
	System.out.println(i3%j3);
	
}
十、赋值运算符
  • 前++,后++,前–,后–(某些精度丢失问题,可以靠自增解决)
public static void test1() {
	int i1 = 12;
	System.out.println(i1);
	
	//输出的是:i1++这个式子的值:i1加1之前的值(没有加1)
	System.out.println(i1++);
	//输出的是:++i1这个式子的值:i1加1之后的值(加过1)
	System.out.println(++i1);
	
	int i2 = 11;
	System.out.println(i2);
	
	//输出的是:i2--这个式子的值:i1减1之前的值(没有减1)
	System.out.println(i2--);
	
	//输出的是:--i2这个式子的值:i2减1之后的值(减过1)
	System.out.println(--i2);
	
	//14+15
	int result = i1++ + i1++;
	System.out.println(result);
	
	
	short s1 = 12;
	
	//精度丢失,编译报错
//	s1 = s1 + 10;
	//自增:数据的数据类型不会发生变化
	s1++;
	
	System.out.println(s1);
	
	//自增不会报错,
	byte b1 = 127;
	b1++;
	System.out.println(b1);
}
  • 关于自增,自减的面试题
//s+=2和s=s+2是不一样的
//s+=2不会改变变量的数据类型
public static void test3() {
	short s1 = 10;
//	s1 += 2;
	s1+=2;
	System.out.println(s1);
	
	//这种不会发生数据类型提升
	s1 *= 0.1;
	
	//这种的话,进行浮点数据的运算
	double result = s1*0.1;
	System.out.println(result);
	System.out.println(s1);
	
	int m = 2, n = 3;
	n *= m++;//n = n * m++
	System.out.println(n);
	
	n = 10;
	n += (n++) + (++n);//n = n + (n++) + (++n) 10+10+12
	System.out.println(n);//32
}
十一、逻辑运算符
  • & && | || ^(异或) !(取反) 通过逻辑运算符,得到的是布尔值,进行逻辑运算的两边都是布尔值
  • & 和 &&的区别?(| 和 ||)
    • &&是短路与
      • a && b a不成立,则b的判断直接跳过
    • &是与
      • a & b a不成立,还会继续判断b的布尔值
//逻辑运算符
//逻辑运算符的两边必须都是布尔型
public static void test4() {
	int num = 10;
	int num1 = 10;
	boolean right = true;
	boolean wrong = true;
	right = false;
	if(right & (num++>0)) {
		System.out.println("hello right!");
	}else {
		System.out.println("hello wrong!");
	}
	System.out.println(num);
	
	wrong = false;
	if(wrong && (num1++>0)) {
		System.out.println("hello ringt!");
	}else {
		System.out.println("hello wrong!");
	}
	System.out.println(num1);
}
  • 注意:面试题(关于if的判断条件是赋值条件的话,判断条件就是赋的值,赋值为true即为true,赋值为false,即为false)
//java赋值运算是存在返回值的,赋什么值,最后得到的就是什么值
public static void test5() {
	boolean x = true;
	boolean y = false;
	short z = 42;
	System.out.println(y=false);
	System.out.println(y=true);
	if((z++==42)&&(y=true))z++;
	System.out.println(z);
	System.out.println(x=false);
	if((x=false)||(++z==45))z++;
	System.out.println(z);	
}

十二、位运算符:
  • <<、>>、>>>、&(与)、|(或)、^(异或)、~(取反)

    • 取反符:
      • 针对补码进行操作、符号位也要进行取反
  • 位运算符两边是操作整型数据

//位运算符,操作整型数据
//<< 一定范围内,想左移动一位,相当于乘以2
//>> 一定范围内,向右移动一位,相当于除以2(负数,补码好理解)
//>>> 无符号右移,都是拿0补,(负数无意义)
//面试题:高效计算:2*8  2<<3或者8<<1(移位运算的数量级是常数级别的)
public static void test6() {
	int i = -16;
	i = i << 2;
	System.out.println(i);
	i = i >> 2;
	System.out.println(i);
	
}
十三、三元运算符
  • a > b(条件表达式) ? a : b;
    • 条件表达式为真:执行表达式a
    • 条件表达式为假:执行表达式b
  • 可多层嵌套
//三位运算符
public static void test7() {
	int i = 12;
	int j = 14;
	int max;
	max = i > j ? i : j;
	System.out.println(max);
}
十四、运算符的优先级
  • 注意:不清楚运算符的优先级,记得加小括号
十五、流程控制
  • if else
//if/else/else if
public static void test8() {
	int i = 12;
	int j = 15;
	if(i > j) {
		System.out.println("i大于j");
	}else if(i == j) {
		System.out.println("i等于j");
	}else {
		System.out.println("i小于j");
	}
}
十六、键盘输入
  • Scanner 读取从键盘输入的值
    • 除了获得String使用的是next,其他数据类型一般是next+数据类型。但是Scanner不存在获得char的方法,想要得到char,需要获取为String类型的,再用charAt()获取字符;
	//从键盘获取不同变量的值
	//1. 导入Scanner类
	//2. 创建Scanner实例
	//3. 接收指定类型数据
	//Scanner没有提供关于char 的方法,如果想要得到char类型的数据,一般拿string获取。然后用charAt()方法获取char
	public static void test1() {
		//创建一个Scanner实例
		Scanner scanner = new Scanner(System.in);
		//获取int类型的数据
		System.out.println("请输入你的姓名:");
		String name = scanner.next();
		System.out.println("请输入你的年龄:");
		int age = scanner.nextInt();
		System.out.println("请输入你的身高:");
		double height = scanner.nextDouble();
		System.out.println(name+"-------"+age+"-------"+height);
//		System.out.println(x);
	}
十七、循环结构
/**
 * 
* @Description 循环结构
* @author immort-ppm Email:1370922071@qq.com
* @version 1.0
* @date 2020年10月21日下午3:43:50
*
 */
/*
 * 循环结构四要素:
 * 	1. 初始化条件
 * 	2. 循环条件 -->boolean类型
 * 	3. 循环体
 * 	4. 迭代条件
 * 
 * 无限循环:
 * 	while(true)
 * 	for(;;)
 */
public class preview_6 {
	
	//循环结构:for
	public static void test1() {
		for(int i = 0; i < 10; i++) {
			System.out.println(i);
		}
	}
	
	//循环结构:while
	//注意:while的判断条件是boolean型
	public static void test2() {
		int i = 0;
		boolean isTrue = true;
		while(isTrue) {
			if(i == 10) {
				isTrue = false;
			}
			System.out.println(i);
			i++;
		}
	}
	
	public static void main(String[] args) {
//		test1();
		test2();
	}
}

上面是我在学习java学习过程中,做的笔记,方便后续复习,继续java学习中…

如果文章内容有错误的地方,请在留言处留下你的见解,方便大家共同学习。谢谢。

作者:皮皮猫吖


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值