JavaSE基础知识点(一)

java的简介

1、java是什么?

​ 一种编程语言。

2、编程语言的分类

高级语言:c/c++,java,php,javaScript,python…

汇编语言:通过大量的英文单词代表计算机的指令。 add 1 1

机器语言:二进制序列,能被计算机直接识别的语言 01010111101

高级语言的分类:

​ **编译型语言(c/c++):**需要先将源代码进行编译,转换成特定的可执行文件(平台(操作系统)能直接执行的二进制文件)

​ **优点:**编译一次,永久执行,当你发布可执行文件给客户时不需要提供源代码,只提供一个可执行的二进制文件即可,体现安全性,执行速度快

​ **缺点:**不能跨平台

解释型语言(javaScript,python):

​ 需要提供一个解释器,在源代码执行的时候被解释器翻译成一与平台无关的中间代码,之后再翻译成各个平台的机器语言

​ 特点:能夸平台

​ 缺点:运行时需要源代码,运行速度慢

3、java的特征

​ 半编译半解释:java会将一个java文件编译(不完全编译)成一个.class文件,再将.class文件解释成各个平台能识别的机器语言

​ JVM(java虚拟机):相当于一个翻译官

​ 运行原理:java编译器先将代码编译成.class文件,jvm再将.class文件解释成各个平台能够识别的机器语言

​ 因为每个平台都有自己的jvm,有不同的系统的不同版本jdk

​ 生命周期:

​ 出生:只有遇到main方法,jvm就开始启动,没有main方法就启动不了,所以main方法是java程序运行的入口。

​ 死亡:main方法执行完了之后就停止

​ 场景:有10个main同时执行,有多少个jvm在运行呢?10个,10个jvm同时运行,互不影响

4、安装JDK

​ 无论使用什么语言进行开发,都要安装SDK,在JAVA中称为JDK

​ JDK:java开发工具包

​ JRE:java运行环境

​ ①检测你电脑上的安装的jdk版本 cmd进入dos窗口 java -version

​ ②如果没有安装出现以下:‘java’ 不是内部或外部命令,也不是可运行的程序

​ 双击执行jdk-8u92-windows-x64进行安装

​ 更改安装位置:不能有空格,不能有中文 E:\Java\jdk1.8.0_92\

​ 安装JRE:更改安装位置即可 E:\Java\jre1.8.0_92\

​ ③:cmd进入dos窗口 java -version

java version "1.8.0_92"
Java(TM) SE Runtime Environment (build 1.8.0_92-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode)

​ ④:检测编译环境 javac

​ ‘javac’ 不是内部或外部命令,也不是可运行的程序

​ ⑤配置jdk环境变量

​ 右键我的电脑–属性–高级系统设置–环境变量

​ 系统变量中–新建–JAVA_HOME:jdk根目录

​ path–编辑–添加%JAVA_HOME%\bin 注意一定是最前面

⑥测试javac

  1. jdk目录: bin:可执行的二进制文件 lib:程序运行所依赖的jar和一些二进制文件 src.zip:源码包
  2. jvm和jre的关系: jre=jvm+程序运行依赖的简单jar包

⑦第一个java程序 Hello World

⑧eclipse的使用:

​ workspace:工作空间

​ 项目结构:src:资源目录,放java代码的地方–类路径

​ 快捷键(代码提示):ALT+/

  • ​ 控制台打印输出:
System.out.println("Hello World");
  • 右键Class–run as–java Application 运行

    • ​ 注意:该类一定要有main方法
  • eclipse会自动帮我们编译src目录下的.java文件,编译好的.class存放在bin目录下

变量和运算符

1、关键字、保留字、标识符

**关键字:**对编译器有特殊意义的单词,java中已经将其使用

保留关键字:对编译器有特殊意义的单词,java中没有使用它作为关键字,以后用不用不知道

***注意:**关键字和保留字不能用作自己定义的变量名、方法名、类名、包名

标识符:包、类、方法、参数和变量的名称总称为标识符

规则

必须以字母、下划线(_)或美元符号($)开头;
余下的字符可以是下划线、美元符号或任何的字母或数字,长度不限;
标识符中不能有空格;
不能使用Java中的关键字或者保留字做为标识符;

命名规范:

  • 包名: 域名.公司名.项目名.种族 com.neusoft.helloworld.test
  • 类名:驼峰命名法 / \_ / \_ 每个英文首字母必须大写 : Student ,StudentHome,student_home
  • 方法名:驼峰命名法 第一个英文首字母小写,其他首字母大写: getNameAndPassword
  • 参数和变量的名称:驼峰命名法 第一个英文首字母小写,其他首字母大写
  • 常量名:全部大写,每个英文用下划线隔 ‘_’
常量:常量指程序里持续不变的值,在整个程序运行过程中它是不可改变的
变量:程序运行过程中随时可以发生改变的量,变量是程序中数据临时存放的场所
public static void main(String[] args) {
		//声明
		int age;
		//初始化 赋值
		age=10;
		//使用
		System.out.println(age);
		
		//定义一个变量  声明+初始化
		int sex=1;
		System.out.println(sex);//1
		sex=20;
		System.out.println(sex);//20

	}
数据类型:
  1. ​ 基本数据类型: 声明的变量存在栈区

    • 数值型(数字)

      • 整型:byte,short,int,long

        //1G-1024mb  1mb-1024kb   1kb-1024b
        		//整型 byte short int long
        		/** byte 大小:1字节  8位    -2^7~2^7-1  -128~127  */
        		byte b1=123;
        		byte b2=127;
        		/*byte b3=128;*/
        		
        		/**short 大小:2字节 16位 -2^15~2^15-1 */
        		short s1=12345;
        		
        		/**int 大小:4字节  32位  -2^31~2^31-1*  默认整型是int*/
        		int i1=12312312;
        		/*System.out.println(i1);*/
        		//进制 进制之间的转换最好先转为10进制
        		int i2=12419;//10进制
        		int i3=0x15A;//16进制 0x开头 A:10 F:15  10*16^0+5*16^1+1*16^2
        		System.out.println(i3);//346
        		int i4=065;//8进制 必须以0开头 
        		System.out.println(i4);//53
        		int i5=0b10101; //2进制 0b开头  1*2^0+0*2^1+1*2^2+0*2^3+1*2^4
        		System.out.println(i5);//21
        		
        		/**long 大小:8字节 64位 -2^63~2^63-1*/
        		long l1=1231312L;
        		
        
      • 浮点型:float,double

        		//浮点型  float double
        		/**float 大小:4字节  32位  -2^31~2^31-1*/
        		float f1=123.456F;
        		/**double 大小:8字节  64位  -2^63~2^63-1默认是double*/
        		double d1=123.456d;
        		
        
    • 字符型:char

      //字符型 char
      		/**char 单个字符*/
      		char c1='r';
      		/*char c2='rs';*/
      		char c3='中';
      		/*System.out.println(c3);*/
      		
      		/**char 整型  2字节 16位  0~2^15-1 */
      		//char类型接收整型数据,jvm会去查找ascil码表找到这个整型对应的ascil码值
      		char c4=49;
      		System.out.println(c4);//1
      		char c5=62;
      		System.out.println(c5);//>
      		
      		/**char  Unicode字符  \u03A6表示一个字符*/
      		char c6='\u03A6';
      		System.out.println(c6);//Φ
      		char c7='\u0024';
      		System.out.println(c7);//$
      		
      		/**char 十六进制 --将16进制转为十进制然后找该十进制数对应的ascil码值 */
      		char c8=0x0041;
      		System.out.println(c8);//A
      
    • 布尔型:boolean

2、引用数据类型:声明的变量存在堆区

  • 类:class
  • 接口:interface
  • 数组:Arrays
运算符:
  1. 概念:是一种特殊的符号,用以表示数据的运算、赋值和比较

  2. 运算符的种类:

    赋值运算符:=、+=、﹣=、=、/=、%=

    //赋值运算符:=、+=、﹣=、*=、/=、%=    从右往左读
    		int age=12;
    		//+=  
    		age+=12;//age=age+12
    		System.out.println(age);//24
    		age/=2;//age=age/2
    		System.out.println(age);//12
    

    算术运算符: +、﹣、*、/、%、++、 -

    		//算术运算符: +、﹣、*、/、%、++、 --
    		
    		int i1=-5/-3;
    		System.out.println(i1);//1  求整  负负得正 
    		
    		int i2=-5%-3;
    		System.out.println(i2);//-2 求余 符号和被除数一致
    		
    		//++ 自增  --自减
    		//++在右边  先赋值给表达式,后做计算
    		/*int i3=10;
    		System.out.println(i3);//10
    		i3++;
    		System.out.println(i3);//11
    		 */		
    		int i31=10;
    		System.out.println(i31++);//10
    		System.out.println(i31);//11
    		
    		//++在左边  先计算,先赋值给表达式
    		/*int i4=10;
    		System.out.println(i4);//10
    		++i4;
    		System.out.println(i4);//11
            */		
    		int i41=10; 
    		System.out.println(++i41);//11
    		System.out.println(i41);//11
    		
    		int i5=10;
    		int i6=i5++;
    		System.out.println(i6);//10
    		
    		int i7=10;
    		int i8=++i7;
    		System.out.println(i8);//11
    		
    

    比较运算符:>、<、>=、 <=、= =、!=、instanceof

    // 比较运算符:>、<、>=、 <=、= =、!=、instanceof 返回boolean 值
    		System.out.println(6>7);//false
    		boolean temp=67>69;
    		System.out.println(temp);//false
    		//==用于数值类型的比较  比较的是值是否相同
    		System.out.println(78==89);//false
    		int age1=100;
    		if(age1==200) {
    			System.out.println("年龄太大");
    		}
    		//!= 比较的是值是否不相同
    		if(age1!=200) {
    			System.out.println("不是200岁");
    		}
    		//instanceof 用于判读该对象是否属于某个类型的 用于引用数据类型--同一类型  了解即可
    		String sd="2015-12-12";
    		Date d=new Date();
    		if(d instanceof Date) {
    			System.out.println("是日期类型");
    		}
    		/*if(mao instanceof dongwu) {
    			
    		}*/
    

    逻辑运算符:!、&&、||

    /**逻辑运算符:!、&&、||  非 与 或  返回boolean  表达式返回的值一定是boolean ,整个逻辑表达式返回boolean*/
    		/*&& 表达式1&&表达式2  
    			表达式1和表达式2都返回true整个表达式才为true
    			只要&&一边为false就为false
    		*/
    		boolean t1=1>2 && 2<3;
    		
    		//||  表达式1||表达式2   表达式1和表达式2只要有一个表达式返回true整个表达式就为true,||两边都为false才为false
    		boolean t2=1>2||2<3;
    		int money=200000;
    		int age2=25;
    		boolean t3 =money>250000 || age2<30;
    		System.out.println(t3);//true
    		
    		//! 逻辑非 将true变为false,将false变为true
    		boolean t4=false;
    		System.out.println(!t4);//true
    		
    

    位运算符: &、|、^ 、 ~、>>、<<、>>>

    /**位运算符: &、|、^ 、 ~、>>、<<、>>>*/
    		//按位“与” & 只有参加运算的两位都为1,&运算的结果才为1,否则为0
    		int j1=9;
    		int j2=3;
    		/*  1001
    		 * 	0011
    		 * 	0001
    		 * 
    		j1=j1 & j2;
    		System.out.println(j1);//1
    		*/
    		
    		//按位“或” | 只有参加运算的两位都为0,|运算的结果才为0,否则为1
    		/*  1001
    		 * 	0011
    		 * 	1011
    		 * 
    		j1=j1 | j2;
    		System.out.println(j1);//11
    		*/
    		//异或 ^   只有参加运算的两位不同,^运算的结果才为1,否则为0
    		/*  1001
    		 * 	0011
    		 * 	1010
    		 */
    		j1=j1 ^ j2;
    		System.out.println(j1);//10
    		//<< 左移  p<<a   公式:p*2^a  变大
    		int p=10;
    		p=p<<4;
    		System.out.println(p);//160
    		
    		//>> 右移 y>>a  公式 :y/2^a 变小
    		int y=10;  
    		y=10>>2;
    		System.out.println(y);//2
    

    逻辑运算符和位运算符区别

    /**逻辑运算符和位运算符区别*/
    		//逻辑&&  表达式1&&表达式2  表达式1为false是表达式2不运行了  具有短路功能
    		int p1=10;
    		boolean t5=p1<8 && p1++>5;
    		System.out.println(p1);//10
    		//按位&  表达式1&表达式2  表达式1为false是表达式2会继续运行了  不具有短路功能
    		int p2=10;
    		boolean t6=p2<8 & p2++>5;
    		System.out.println(p2);//11
    		
    		//||  表达式1||表达式2  表达式1为true是表达式2不运行了  具有短路功能
    		int p3=10;
    		boolean t7=p3<20 || p3++>5;
    		System.out.println(p3);//10
    		
    		//按位|  表达式1|表达式2  表达式1为true是表达式2会继续运行了  不具有短路功能
    		int p4=10;
    		boolean t8=p4<20 | p4++>5;
    		System.out.println(p4);//11
    

    条件运算符: ?:**

    /**条件运算符: ?: 表达式1?表达式2:表达式3  如果表达式1为true返回表达式2否者返回表达式3
    		 * 
    		 * 相当于 if()else{}
    		 * */
    		char sex='男';
    		/*int new_sex*/
    		int new_sex=sex=='男'?1:2;
    		System.out.println(new_sex);//1
    		int sex1=0;
    		if(sex=='男') {
    			sex1=1;
    		}else {
    			sex1=2;
    		}
    
    
    

    运算符的优先级:算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符** 括号优先级最高

流程控制

条件语句

1.IF语句

单一条件if(表达式){ 语句块}表达式为true就执行语句块
多条件if(表达式){语句块1}else{语句块2}表达式为true就执行语句块1否则执行语句块2
多分支if(表达式1){语句块1}else if(表达式2){语句块2}else{语句块3}表达式1为true就执行语句块1,表达式2为true执行语句块2,都不满足执行语句块3
//单一条件
		if(true) {
			System.out.println("你好");
		}
		//多条件
		int money=250000;
		int sex=30;
		if(money>300000 && sex<30) {
			System.out.println("那么结婚吧");
		}else {
			System.out.println("你是个好人");
		}
		
		//多分支 
		//需求:年龄:20-30:200  30-40:300  40-50:500 
		int age=18;
		int level=age/10;
		if(level==2) {
			System.out.println("你的奖金是200");
		}else if(level==3) {
			System.out.println("你的奖金是300");
		}else if(level==4) {
			System.out.println("你的奖金是400");
		}else {
			System.out.println("你没奖金");
		}
	}

2、switch语句
/**
 * Switch语句  相当于if(){}else if(){}else{}
 * case:不能有重复判断的值,case中的值必须要与switch表达式的值具有相同的数据类型,必须是常量
 * default:匹配所有不满足情况下执行语句块
 * default:一般放在语句块的最后,前提是所有条件不满足,最后执行 ,可以没有default语句
 * break:跳出整个switch判断
 * switch语句的结束:1、遇到break 2、执行完整个switch语句
 * @author wudagai
 *switch (表达式a){
	case 取值1:
    	语句块1 
    	break;                     
    	…
	case 取值n:
    	语句块n   
    	break;                      
	default:          
    	语句块n+1
    	                    
	}
	表达式的值只可以接受四个基本数据类型和对应包装类(int、byte、char、short) 、
	String型、枚举型,不接受其他类型的值
	表达式a的值接受String类型只在JDK7及以后版本有效

 */
//需求:年龄:20-30:200  30-40:300  40-50:500 
		/*int age=18;
		int level=age/10;
		switch(level) {
		case 2:
			System.out.println("奖金是200");
			break;
		case 3:	
			System.out.println("奖金是300");
			break;
		case 4:	
			System.out.println("奖金是400");
			break;
		default:
			System.out.println("无奖金");
		
		}*/
		
		String name="家豪";
		switch(name) {
		case "张三":
			System.out.println("小张爸爸");
			break;
		case "家豪":
			System.out.println("有女朋友");
			break;
		case "李四":
			System.out.println("李四爸爸");
			break;
		}
		
		int age=18;
		int level=age/10;
		switch(level) {
		default:
			System.out.println("1");
			break;
		case 2:
			System.out.println("2");
			break;
		case 3:	
			System.out.println("3");
			break;
		case 4:	
			System.out.println("4");
			break;
		
		}
		
3、变量的作用域:
/**
	 * 只有初始化之后才能使用
	 * 作用域:每个方法或者代码块的花括号就是一个作用域
	 * 变量声明在某个作用域中,只能在该作用域中生效
	 * 在同一个作用域中变量不能被重新定义
	 */
	public static void main(String[] args) {
		/*System.out.println(a);//a 还没有被声明*/
		int a; //a的作用域是整个main方法
		a=10;
		/*System.out.println(a);*/
		if(a<20) {
			int b=10;//b的作用域在if语句块中
			System.out.println(a);
		}
		
	}
4、获取控制台输入:
/*String s1="张三我爱你";
		System.out.println(s1);
		//字符串的拼接  常量用引号,变量不需要用引号,用+号连接
		int a=10;
		System.out.println("a:"+a);*/
		//System.in 输入流 获取控制台输入的信息
		Scanner sc =new Scanner(System.in);
		System.out.println("请输入字符串");
		String message=sc.nextLine(); //这个方法会阻塞,等待控制台输入,程序会等待用户输入后再继续执行
		System.out.println("请输入整型");
		int i=sc.nextInt();
		System.out.println("请输入浮点型");
		double d=sc.nextDouble();
		
		System.out.println("i:"+i);
		System.out.println("d:"+d);
		System.out.println("message:"+message);
5、产生随机数
	Random r=new Random();
		//默认取值 int范围之内  -2^31~2^31-1
		int i=r.nextInt();
		System.out.println("i:"+i);
		//随机产生0~9 之间的数值
		int j=r.nextInt(10);
		System.out.println(j);
		
		/*产生一个12以内的随机数作为月份,输出该月份的天数。 1-12
		1、3、5、7、8、10、12月天数为31
		2月天数为28
		4、6、9、11月天数为30*/
		int money=r.nextInt(12);//0-11
		int money1=r.nextInt(13);//0-12
		int money2=r.nextInt(12)+1;//1-12
6、while和do_while循环
public static void main(String[] args) {
		/*
		 while(A表达式){
		 	B语句块
		 }
		 如果A表达式为true,B语句块执行,当A表达式为false时,循环终止
		 =======================================================
		 do{
		 	B语句块
		 }while(A表达式);
		  如果A表达式为true,B语句块执行,当A表达式为false时,循环终止
		 
		 注意:do_while无论条件是否满足,都会执行一次
		 
		 =========================================================
		 死循环: 
		 产生的条件:没有循环终止条件
		 死循环后面不要写代码,会编译报错
		 */
		//循环输出1-9
		int i=1;
		
		/*while(i<1) {
			System.out.println("i:"+i);
			i++;
		}
		
		System.out.println("=========================");
		do {
			System.out.println(i);
			i++;
		}while(i<1);//分号不要忘记
		 */
		/*while(true) {
			System.out.println("我还年轻,我喜欢运动");
		}*/
		Scanner sc=new Scanner(System.in); //导包快捷键 ctrl+shift+o
		while(true) {
			String message=sc.nextLine();
			System.out.println("message:"+message);
		}
		
7、for循环
	/*
		 for(初始化表达式A;循环条件表达式B;循环后的操作表达式C){
         	语句块D
		}
		初始化表达式A只执行一次,循环条件表达式B为true执行语句块D,
		for循环执行顺序:
		
		初始化表达式A
		语句块D
		循环后的操作表达式C0
		语句块D
		循环后的操作表达式C1
		语句块D
		循环后的操作表达式C2
		
		
		死循环:没有循环终止条件
		
		 */
	/*	for (int i = 0; i < 10; i++) {
			System.out.println("i:"+i);
		}
		*/
		/*//测试for循环执行顺序
		int i=0;
		for (System.out.println("初始化表达式A"); i <3; System.out.println("循环后的操作表达式C"+i++)) {
			System.out.println("语句块D");
		}*/
		
		//死循环1  没有循环判断表达式
		/*for(;;) {
			System.out.println("我爱你中国");
		}*/
		
		//死循环2  没有循环判断表达式
		/*for(int i=0;;) {
			System.out.println("我爱你中国");
		}*/
		
		//死循环3  没有循环判断表达式
		/*for(int i=0;;i++) {
			System.out.println("我爱你中国"+i);
		}*/
		//死循环4  循环判断一直为true
		for(int i=0;i<10;) {
			System.out.println("我爱你中国"+i);
		}
	}
8、循环嵌套
/**
		 * 1*1=1
		 * 1*2=2 2*2=4
		 * 1*3=3 2*3=6  3*3=9 
		 * ........
		 *  *****
		 *  *****
		 *  *****
		 *  *****
		 *  
		 *  *****
		 *  ****
		 *  ***
		 *  **
		 *  *
		 *  
		 *  *
		 *  **
		 *  ***
		 *  ****
		 *  *****
		 */
		/*for(int i=0;i<10;i++) {
			System.out.println(i);
		}*/
		for(int i=1;i<=9;i++) {
			/*System.out.println("i:"+i);*/
			for(int j=1;j<=i;j++) {
				/*System.out.println("i:"+i+"j:"+j);*/
				System.out.print(j+"*"+i+"="+j*i+"\t");
			}
			System.out.println("-----------------");
		}
9、循环中断
	/*
		 * 1、break: 终止整个循环
		 * 2、continue: 终止当前循环,进入下一次循环
		 * 3、break lable:终止指定的循环
		 */
		/*for(int i=0;i<10;i++) {
			if(i==5) {
				break;
			}
			System.out.println("i:"+i);//0 1 2 3 4 
		}
		System.out.println("--------------------");
		for(int i=0;i<10;i++) {
			if(i==5) {
				continue;
			}
			System.out.println("i:"+i);//0 1 2 3 4 6 7 8 9
		}*/
		//equals:判断两个字符串内容是否相同
		out:for(int i=0;i<10;i++) {
			System.out.println("i:"+i);
			inner:while(true) {
				Scanner sc=new Scanner(System.in);
				String message=sc.nextLine();
				System.out.println("message:"+message);
				if(message.equals("over")) {
					/*break;//跳出while循环*/	
					break out;
			}
			}
		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值