Java语言基础笔记01-基础语法

01-语言概述与变量类型

领域

  • Java Web: 后台开发
  • 大数据开发
  • Android应用程序开发:客户端开发

DOS操作

  • 切盘:C:
  • 呈现目录: dir
  • 新建文件夹:md 文件夹名称
  • 进入目录/文件夹: cd 路径
  • 直接退到盘符: cd/
  • 创建文件: echo name:xxx>1.doc
  • 删除文件: del 1.doc | del *.txt
  • 删除文件夹: rd 文件夹名称(只能删除空目录)| del 文件夹名称(是删除此文件夹下面的所有文件,而不是删除文件夹)
  • 退出命令行:exit

编程语言

  • 第一代:机器语言-二进制代码

  • 第二代:汇编语言-助记符表示

  • 第三代:高级语言

    1. 面向过程

    2. 面向对象

HelloWorld

public class HelloWorld{
    //main方法是程序的入口
    public static void main(String[] args){
        //输出语句:System.out.println() - 先输出数据,然后换行
        //			可以不向内添加数据-直接用作换行
        //			System.out.print() - 只输出数据
        System.out.println("HelloWorld!");
    }
}
class test{
    
}
//可以声明多个class,但只能有一个public修饰的类且public修饰了类必须与源文件名相同
  • .java:Java代码
  • javac+.java文件:编译生成class文件(字节码文件-文件名与.java中的类名相同)
  • java+.class文件的名:运行

注释

  • 单行注释://

  • 多行注释:/*多行注释*/

  • 文档注释:

    /**

    @author xxx

    @version 8.0

    hi

    */

javadoc helloworld.java

单行注释和多行注释-对程序进行解释说明|调试代码

文档注释-可以被JDK提供的工具javadoc解析,生成该程序的说明文档(网页形式)

关键字与保留字

  • 关键字:具有特殊含义的字符串
  • 保留字:以后可能具有特殊含义的字符串 | 可能会变成关键字的字符串

标识符

  • 英文字母、数字、_、或$组成(可以使用汉字等Unicode字符,但不建议)
  • 不能以数字开头
  • 不可使用关键字或保留字
  • 严格区分大小写,无长度限制
  • 不能包含空格

变量类型

变量类型 变量名 = 值;

  • byte short int long
  • float double
  • char
  • boolean
  • class(类) (包括字符串)
  • interface(接口)
  • [ ] (数组)
class Variable{
    public static void main(String[] args){
        //变量的定义,同一变量不可多次定义
        int age = 12;
        //变量的使用
        System.out.println(age);	//输出12
        //变量赋值
        age = 19;
        /*
        变量作用域一般为一个大括号内
        */
        
        //int四字节-表示数字 | float 四字节 为 数+幂指数(10为底)
        //float 精度不高,通常使用 double
        float a = 1.234f;	//float后加f标记类型
        double b = 1.2345678;	//精度是float两倍
        
        char c = 'c';		//字符型--单引号-单字符(可以是转义字符或Unicode代码)
        
        //布尔型
        boolean d = true;	//只能是true或false
        
        String e = "Hello World!";	//字符串使用双引号
        //可以与其他八种基本类型进行运算,结果是String类型
    }
}

类型之间运算

'a' + 1;		//字符转换为ascll码计算------97

byte a = 2;
int b = 12;
int c = a + b;	//byte等与更大类型运算时,自动提升为更大类型(此处为int)
//int与float等-int自动转换为float等
//自动类型提升:byte、short、char->int->long->float->double

long d = 12.2323344;
int e = (int)d;	//强制转换-可能导致精度损失

进制

int a = 0b1011;		//0b或0B开头->二进制->8+2+1->11
int b = 013;		//0开头->八进制->8+3->11
int c = 11;			//十进制
int d = 0xb;		//0x或0X开头->十六进制->1,2,3,4,5,6,7,8,9,a,b,c,d,e,f|不区分大小写->b对应十进制11

02-运算符与键盘输入

算术运算符

+,-,*,/加减乘除
++,–自增,自减
%取模
int a = 10;
int b = 23;
a+b;		//33
a-b;		//-13
a*b;		//230
a/b;		//0--两个整数相除结果为整数-整除
a%b;		//10-10除23得0余10

(a++)+(b++);	//结果为33,a++的返回值为10,但返回之后a变为11,b++返回23然后b变为24
(++a)+(++b);	//结果为37,a|b先自增为12|25,然后相加
//自增自减不会改变变量本身的类型,short类型自增还是short类型,但如果short类型变量加一则会变成int类型
short c = 3;
c++;		//c为4,仍为short类型
//c = c + 1;	//报错,此时c+1为int,而c为short
c = short(c + 1);

赋值运算符

=直接赋值
+=a+=b; – a = a+b
-+a-=b; – a = a-b
*=a*=b; – a = a*b
/=a/=b; – a = a/b
%=a%=b; – a = a%b
int a = 10;		//将值10赋给a
int b = a;		//将a的赋给b
a += 2;			//a = a + 2 --> a = 10 + 2 --> a = 12
//也不会改变数据类型
...

比较运算符

==两者相等
!=不等
>=,<=,>,<大于等于,小于等于,大于,小于
instanceof比较两个对象是否相同
int a = 8;
int b = 10;

a < b;		//true

逻辑运算符

&逻辑与
|逻辑或
!逻辑非
^逻辑异或
&&短路与
||短路或
false&true;		//逻辑与		false	虽然遇到了false,但依然会向后判断
true|false;		//逻辑或		true	虽然遇到了true,但依然会向后判断
!true;			//逻辑非		false
true^false;		//逻辑异或		true	两边都为true或false,则结果为false,否则为true
false&&true;	//短路与		false	遇到false即返回false,不往后看
true||false;	//短路或 		true	遇到true即返回true,不往后看

位运算符

<<,>>左移,右移
<<<,>>>无符号左移,无符号右移
&与运算
|或运算
^异或运算
~取反运算
System.out.println(~12);		//取反
System.out.println(12&7);		//按位与,比较二进制位,都为1才为1
System.out.println(12|7);		//按位或,比较二进制位,都为0才为0
System.out.println(12^7);		//按位异或,比较二进制位上的值,相同为0,异为1
                                 //此处   12:00001100
							  //	   7:00000111
							  //结果 	:  00001011
System.out.println(3<<1);	//左移,超出剔除,空位补零--移多了可能变为负数
System.out.println(4>>1);	//右移,超出剔除,如果原来最高位为1,则空位补1,为0则补0
System.out.println(2>>>1);	//无符号右移,无论被移位二进制最高位是0还是1,都用0补充

//异或
int a = 12;
int b = 34;
a = a ^ b;
b = a ^ b;
a = a ^ b;
//交换两个的值

三元运算符

(条件表达式) ? 语句1 : 语句2

int a = (1 < 2) ? 3 : 4;	//1<2结果为true,a的值被赋为3(否则赋值为4)

键盘输入

import java.util.Scanner;		//导入键盘输入相关类
class ...
public static void main(String[] args){
    Scanner scan = new Scanner(System.in);	//创建一个对象(System.in表示从系统输入)
    
    int num = scan.nextInt();		//获取键盘输入的一个整数
    String str = scan.next();		//获取字符串
    double dou = scan.nextDouble();	//获取浮点数
    boolean b = scan.nextBoolean();	//获取布尔类型
    
    //获取单个字符
    //先使用next()获取字符串类型,然后转化为字符型
    String char1 = scan.next();
    char char2 = char1.charAt(0);		//获取char1索引为0的字符
}

03-条件控制与循环

条件控制

if-else语句

if(条件){条件为true是执行}else{条件为false执行}
int i = 1;

if(i == 1){i++;}	//单个if

//是非2选1
if(i % 2 == 0){
    System.out.println("偶数!");
}else{
    System.out.println("奇数!");
}

//上面可以改写成三元运算符形式
System.out.println(i % 2 == 0 ? "偶数!" : "奇数!");



//if-else if -...-else,多重选择
if(i == 1){
    ...
}else if (i == -1){
    ...
}else{
     ...
}

switch

int num = 2;
switch(num){		//任何类型都可以
    case:0
        System.out.println("Zero");
        break;
    case:1
        System.out.println("One");
        break;
    default:					//相当于else
        System.out.println("xxx");
        
}

for循环

for(int i = 0; i < 10; i++){	//三个分别为初始化语句1、循环条件2,迭代调价4
    System.out.println(i);		//循环体3
}	//执行顺序:1 2 3 4 2 3 4 ... 4 2

for(int i = 0;i < 10; i++){
    if(i % 5 == 0){
        break;	//跳出循环
    }else{
        continue;	//结束本次循环,进入下一次循环
    }
}

//代标签的break与continue-结束整个(本次)循环,跳往标签处继续执行
int count = 0;
co: for(int i = 1; i < 10; i++){
    if(i % 5 == count){
        continue co;
    }
    count++;
}

while循环

int i = 0;		//相当于for循环的1
while(i < 10){	//相当于for循环的2
    System.out.println(i);	//相当于for循环的3
    i++;					//相当于for循环的4
}

do-while循环

int i = 0;
do{
    System.out.println(i);	//do-while先执行循环体才判断--即至少会执行一次循环体
}while(i < 10);

04-数组及简单算法

引用数据类型,但其元素既可以是基本数据类型也可以是引用数据类型

//int类型数组
int[] intarr;	//目前只定义了类型,并未定义长度
//静态初始化-数组的初始化和数组元素的赋值操作同时进行
intarr = new int[]{11,22,33,44,55,66,77,88,99,100};
//动态初始化-数组的初始化和数组元素的赋值操作分开进行
String[] strs = new String[5];	//数组长度为5,数组元素类型为String-数组初始化


//获取指定位置的元素
intarr[0];	//数组中的第一个元素,下标为0 -> 值为11   ||数组下标不能越界
strs[0] = "hello";	//赋值

//获取数组长度
intarr.length;	//.length为数组的属性 -> 表示数组的长度(数组初始化时定义的长度)

//遍历数组
for(int i = 0; i < intarr.length; i++){
    System.out.println(intarr[i]);
}

//数组元素的默认初始化值
	/*
	整型   ->	 初始值为0
	浮点型	->	0.0
	字符型	->	0或'\u0000',不是'0'
	布尔型	->	false
	引用类型->	null
	*/

二维数组

int[][] arr2 = new int[3][4];						//限定了长度
int[][] arr3 = new int[][]{{1,2,3},{4,5},{6,7,8,9}};	//可以任意指定长度

//调用
arr3[0][1];		//2 ==> 第一个数组元素的第二个元素

//遍历
for(int i = 0; i < arr3.length; i++){
    for(int j = 0; j < arr3[i].length; j++){
        System.out.println(arr3[i][j]);
    }
}
//初始值
arr2[0];	//[I@1a2a3412	[表示一维,I表示int类型数组,@后面接地址
arr;	//[[I@3d4a567c
int[] arr4 = new int[]{1,2,3,4};

arr5 = arr4;		//地址赋值----arr4和arr5指向的是同一个数组
简单算法
String strs = new String[]{"AA","BB","CC","DD","RR","SS","EE"};

//数组的复制
String str1 = new String[strs.length];
for(int i = 0; i < strs.length; i++){
    str1[i] = strs[i];
}

//数组的反转
for(int i = 0; i < strs.length/2; i++){
    String temp = strs[i];
    strs[i] = strs[strs.length-i-1];
    strs[strs.length-i-1] = temp;
}

//线性查找
String check = "RR";
for(int i = 0; i < strs.length; i++){
    if(check.equals(strs[i])){			//.equals()---用于比较内容
        System.out.println("元素位置为:"+i)
        break;
    } 
}

//二分法查找-有序数组
int[] nums = new int[]{2,4,6,9,12,34,56,78,98};
int checknum = 12;
int head = 0;				//初始首索引
int end = nums.length - 1;	//初始尾索引
while(head <= end){
    int middle = (head + end) / 2;
    if(checknum == nums[middle]){
        System.out.println("元素位置为:"+middle);
    }else if(nums[middle] > checknum){
        end = middle - 1;
    }else{
        head = middle + 1;
    }
}

//排序
int[] arr = new int[]{34,2,35,15,32,82,51,25,98};
//冒泡排序
for(int i = 0; i < arr.length - 1; i++){
    for(int j = 0; j < arr.length - 1 - i; j++){
        if(arr[j] > arr[j+1]){
            int temp = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = temp;
        }
    }
}

//快速排序..(待补充)
常用方法
Array.equals(arr1,arr2);	//判断两个数组是否相等
Array.toString(arr1);			//输出数组信息
Array.fill(arr1,10);	//将数组中全部填充10
Array.sort(arr1);		//将数组排序
Array.binarySearch(arr1,15);	//在数组中查找指定值,没找到返回负数
  • 关注我的公众号【次烦】,获取更多信息(*^▽^*)
    关注公众号获取更多信息,一起学习吧!
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CI_FAN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值