JAVA-笔记1

JAVA 语言

一:开发环境准备

1.JDK安装

2.环境变量配置

PATH : 指向java安装的 bin 目录
CLASSPATH: 为类路径,java运行时查找类文件的路径,java的环境变量在“系统变量”选项区域中查看PATH变量,如果不存在,则新建变量 PATH,否则选中该变量,单击“编辑”按钮,在“变量值”文本框的起始位置添加%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;或者是直接%JAVA_HOME%\bin;在“系统变量”选项区域中查看CLASSPATH 变量,如果不存在,则新建变量CLASSPATH,否则选中该变量,单击“编辑”按钮,在“变量值”文本框的起始位置添加.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
测试:  doc命令行窗口输入 javac

二:关键字

概念:被java赋予特定含义的单词;

关键字注意事项:goto和const作为保留字存在,目前并不使用类似Notepad++这样的高级记事本,针对关键字有特殊的颜色标记,非常直观。高级记

事本:notepad++,editplus等等这些工具对关键字有特殊的颜色标记。

开发工具:eclipse,myeclipse也是对关键字有特殊颜色标记。

组成关键字:字母全小写。
eclipse:
alt+/:自动提示,代码补全:神键 
复制代码:ctlr+alt+向下方向键
删除代码:选中代码:ctrl+d
注释:多行注释:ctrl+shift+/

public class HelloWorld {
	public static void main(String[] args) {
		//输出语句
		System.out.println("helloworld");
//		System.out.println("helloworld");
//		System.out.println("helloworld");
//		System.out.println("helloworld");
	}
}

三:标识符

标识符:是一种规则;给包,类名,接口,方法,变量起名字的字符序列!

组成规则:1)英文大小写字母
   2)数字字符
   3)_和$组成
 
软件开发: 需求分析
   系统分析
  功能,性能测试(测试工程师)
给类,接口,变量,方法命名要遵循四个字:见名知意 Student:学生 S:

注意事项:不能以数字开头。

不能是JAVA中的关键字。

JAVA严格区分大小写。

1)包(目录)的命名:不管是单级包还是多级包:字母全都小写,写法:公司域名的反写(后面在跟上哪个部门)。

  单级包:举例:
   org
  java的源文件...
  多级包:举例:
  org.westos
  org
  westos
  java的源文件..

2)类和接口的命名:
   单个单词:首字母大写,其余小写。
  举例:Demo
  多个单词:每个单词的首字母都大写,其余小写。
  举例:HelloWorld

3)给变量和方法的命名:
  单个单词:字母全部小写
  举例:main():程序的主入口求两个数据之后:sum()
  多个单词:第一个单词字母全部小写,从第二个单词开始,每个单词的首字母都大写,其余小写
举例:checkUserName(),checkPassword()

4)常量的命名:
   单个单词:字母全部大写
  举例:HELLO

  多个单词:字母全部大写,每一个单词和单词之间用下划线隔开
   举例:HELLO_WORLD

public class MakeNameDemo {
		public static void main(String[] args) {
			
			//定义变量
			int a = 10 ;
			
			//不能以数字开头
//			int 1b = 20 ;
			
			//不能是java中的关键字
//			int class = 20 ;
//			int Class = 20 ;
			
			
		}
}
四:注释

1)。注释概述

—用于解释说明程序的文字

2)。Java中注释分类格式

—单行注释

格式://注释文字

—多行注释

格式:/*注释文字*/

—文档注释

格式:/**注释文字*/

3).注释是一个程序员必须要具有的良好编程习惯。

初学者编写程序可以养成习惯:先写注释再写代码。

将自己的思想通过注释先整理出来,在用代码去体现。

因为代码仅仅是思想的一种体现形式而已。

五:常量

1)。常量概述

在程序执行的过程中其值不可以发生改变
2)。Java中常量分类

字面值常量

自定义常量

3)。常量的分类:

 1:字面值常量
  a:字符串常量:使用双引号括起来的内容:
   "helloworld","我爱高圆圆"....
   b:字符常量:使用单引号括起来的单个字母或者数字
   'A','a','0'
   'ab':错误的写法
   c:整数常量:
   100,1000
   d:小数常量
   3.1415926...
   e:布尔常量:
   true或者false
  f:空常量:
   null

public class ConstantDemo {
	public static void main(String[] args) {
		//字符串常量
		System.out.println("helloworld");
		//字符串 +(拼接符号) 任何数据 = 字符串
		System.out.println("helloworld"+'a'+1);//helloworlda1
		System.out.println('a'+1+"helloworld");//98helloworld
		System.out.println("5+5="+5+5);//5+5=55
		System.out.println(5+5+"=5+5");//10=5+5
		
		System.out.println("------------------------");
		
		//字符常量
		//不参与运算
		System.out.println('A');
		System.out.println('a');
		System.out.println('0');
//		System.out.println('ab');
		System.out.println("------------------------");
		
		//当字符参与运算的时候,就需要带ASCII码表中找字符对应的值
		//'A'---->65
		//'a'---->97
		//'0'---->48
		System.out.println('A'+1);
		System.out.println('a'+1);
		System.out.println('0'+1);
		System.out.println("----------------------");
		
		//整数常量
		System.out.println(100);
		//小数常量
		System.out.println(3.1415926);
		System.out.println("-------------------");
		//布尔常量
		System.out.println(true);
		System.out.println(false);
		//空常量
		String s = null ;//针对引用类型
		System.out.println(s);
	}
}

4)。Java针对整数常量提供了4种表现形式
1.二进制:由0.1组成,以0b开头。
2.八进制:由0.1...7组成,以0开头。
3.十进制:整数默认十进制,由0.1...9组成。
4.十六进制:有0.1...9.a.b.c.d.e.f(大小写均可),以0x开头

二进制-八进制-十六进制的图解

任意进制到十进制的转换


十进制到任意进制的转换


5)。进制练习题。

0b100,0100,0x100计算分别对应的十进制是多少

代码

public class JinZhiDemo {
	public static void main(String[] args) {
		System.out.println(0b100);
		System.out.println(0100);
		System.out.println(100);//默认十进制
		System.out.println(0x100);
	}
}
0b100=4;0100=64;0x100=369

6).有符号数据表示法。

在计算机内,有符号数有3种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的。
原码 就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码 正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码 正数的补码与其原码相同;负数的补码是在其反码的末位加1。

六:变量

1)。变量概述
在程序执行的过程中,在某个范围内其值可以发生改变的量
理解:如同数学中的未知数
2)。变量定义格式
数据类型 变量名 = 初始化值;
注意:格式是固定的,记住格式,以不变应万变

3)。Java高级特性:
jdk5.0以后的新特性:
自动 拆装箱
int基本数据类型---->引用类型:Integer
char基本数据类型--->引用类型:Character

A :基本数据类型:
4类八种
a:整数类型:整数类型默认该类型 占字节数 取值范围
byte:字节类型 1 -128~127
short:短整型 2
int:整数类默认该类型 4
long:长整型
b:浮点类型:默认double类型
单精度:float类型 4
双精度:double类型 8
c:字符类型:
char 2
d:布尔类型(逻辑判断上)
boolean 1
布尔类型默认值:false
B :引用类型(面向对象讲)

数组也是引用类型

对于整数类型:
默认的类型:int类型

使用long类型定义变量,在当前变量值的后面加上L或者l(推荐使用L),告诉系统我定义的是一个long类型
浮点类型:默认双精度:double

定义float类型,在该变量值的末尾跟上F或者f

相关代码

public class DataTypeDemo {
public static void main(String[] args) {
//byte类型 byte b = 100 ;
System.out.println("--------------");
System.out.println(b); //短整型 short s = 20 ;
System.out.println("--------------");
s = 50 ; System.out.println("s:"+s);
long l = 1000000000000L;
// int i = 1000000000000; // System.out.println("i:"+i);
double d = 12.56 ;
System.out.println("l:"+l); //浮点类型:默认double类型 System.out.println("d:"+d);
//由于浮点类型存储和整数类型的存储不一致.导致:永远是一个近似值:BigDecimal
//单精度 float f = 12.34F ; System.out.println("f:"+f);
// System.out.println(1.0-0.32); //char类型 char ch = 'A' ; System.out.println(ch);
}
//boolean类型 boolean flag = true; System.out.println(flag);
}

定义变量的注意事项:
1)在java中,定义一个变量不能重复定义
2)建议不要再同一行上定义多个变量
3)定义变量不能以数字开头

4)。强制类型转换的格式;
目标数据类型 变量名 = (目标数据类型)(值);
强制类型转换的缺点:
会损失精度,不建议强制类型转换!
默认类型提升:
byte,short,char之间不转换,但是一旦参与运算
先提升--->int--->long--->float--->double
例题:面试题
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么呢?
第一句编译失败:存在默认类型转换,如果想让改代码不报错,正常运行,必须强制类型转换;
第三句话:b = 3 + 4 ;属于常量相加,先相加---->看结果是否在当前该数据类型范围内,在就不会报错!
相关代码:
public class DataTypeDemo3 {
	public static void main(String[] args) {
		
		byte b1 = 3,b2 = 4 ,b ;
		
//		b =  b1 + b2 ;//错误的:byte类型不可能接收一个int类型的值
		b = (byte)(b1 + b2) ;
		
		b = 3 + 4 ;
		System.out.println("b:"+b);
	}
}
七:运算符
1.算术运算符
+,-,*,/都是比较简单的操作,简单演示即可
+的几种作用:加法,正数,字符串连接符。
除法的时候要注意一个问题:整数相除,只能得到整数;要想得到小数,可以*1.0
/和%的区别:++和--的应用,单独使用效果相同,参与运算使用,在操作数的前后效果不同。
相关代码:
public class OperatorDemo {
	public static void main(String[] args) {
		//定义两个变量
		int x = 3 ;
		int y = 4 ;
		System.out.println(x+y);
		System.out.println(x-y);
		System.out.println(x*y);
		System.out.println(x/y);
		//想让当前结果计算具体的小数,分子都可以乘以浮点类型的数据
		System.out.println(x*1.0/y);
		System.out.println(x%y);
	}
}
扩展的算术运算符:++或者--:循环语句中使用
应用场景:
1)单独使用:不管是++或者--在数据前还是数据后都是自增1或者自减1
2)参与运算使用:
a:++,--在数据的前面,先自增1或者自减1,然后在运算(赋值)
b:++,--在数据的后面.先运算(先赋值),然后自增1或者自减1
相关代码:
public class OperatorDemo2 {
	public static void main(String[] args) {
		//定义两个变量
		int x = 3 ;
		int y = 4 ;
		//进行++,--之前
		System.out.println("x:"+x);
		System.out.println("y:"+y);
		System.out.println("---------------");
		//单独使用
		//++,--在数据前面
//		++x ;
//		--y ;
		//++,--在数据后面
//		x++;
//		y--;
		//参与运算
//		int c = ++x ;
//		int d = --y ;
		int c = x ++;
		int d = y -- ;
		System.out.println("x:"+x);//4,4
		System.out.println("y:"+y);//3,3
		System.out.println("c:"+c);//4,3
		System.out.println("d:"+d);//3,4
	}
}
2.赋值运算符
符号:= , +=, -=, *=, /=, %=
=为基本的赋值运算符,其他的为扩展的赋值运算符
相关代码:
public class OperatorDemo {
	public static void main(String[] args) {
		//定义变量
		//1)给定初始化值
		int a = 10 ;
		//2)先定义,使用该变量之前必须赋值,否则报错
//		int b ;
//		System.out.println(b);//当前该变量没有被赋值
		System.out.println(a);
		int m = 100 ;
		 m +=  200;//相当于m = m + 200 ;
		 System.out.println("m:"+m);
		
	}
}
3。关系运算符
注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。
注2:比较运算符“==”不能误写成“=” 。

相关代码:
public class OperatorDemo {
	public static void main(String[] args) {
		//定义变量
		int x = 3 ;
		int y = 4 ;
		int z = 3 ;
		//== 不能写出=
		System.out.println((x+y)==(x+z));
		System.out.println((x+y)==(y+z));
		System.out.println("---------------------");
		System.out.println(x!= y);
		//定量两个变量
		int a = 10 ;
		int b = 20 ;
		boolean flag = (a==b) ;
//		boolean flag = (a=b) ;导致类型不匹配
		
		
	}
}
4.逻辑运算符
1)逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
2)“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
3)异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。
相关代码:
public class OperatorDemo {
	public static void main(String[] args) {
		//定义三个变量
		int a = 3 ;
		int b = 4 ;
		int c = 5 ;
		//逻辑单与:&
		System.out.println((a>b) & (a>c));
		System.out.println((a>b) & (a<c));
		System.out.println((a<b) & (a<c));
		System.out.println((a<b) & (a>c));
		System.out.println("-------------------------------");
		//逻辑单或|
		System.out.println((a>b) | (a>c));
		System.out.println((a>b) | (a<c));
		System.out.println((a<b) | (a<c));
		System.out.println((a<b) | (a>c));
		System.out.println("-------------------------------");
		//逻辑异或^
		System.out.println((a>b) ^ (a>c));
		System.out.println((a>b) ^ (a<c));
		System.out.println((a<b) ^ (a<c));
		System.out.println((a<b) ^ (a>c));
		System.out.println("-------------------------------");
		System.out.println(!(a>b));
		System.out.println(!!(a>b));
	}
}
5。位运算


相关代码:
public class OperatorDemo {
	public static void main(String[] args) {
		//位运算符
		System.out.println(3 & 4);
		System.out.println(3 | 4);
		System.out.println(3 ^ 4);//(位异或:重点)
		System.out.println(~3);
		
	}
}
重点:
位异或的另一个特点:一个数据被另一个数据位异或两次,结果是该数据本身!

相关代码:
public class OperatorDemo2 {
	public static void main(String[] args) {
		//定义两个变量
		int a = 10 ;
		int b = 20 ;
		
		System.out.println(a ^ b ^ b);
		System.out.println(a ^ b ^ a);
	}
}
  1. <<:左移,最左边的最高符号为丢弃,右边补齐0
  2. >>:右移,最高符号位为0,左边补0,最高符号位为1,左边补齐1
  3. >>>:无符号右移:不管最高符号位是0还是1,左边补齐0
面试题:
请用最有效的方式计算出2*8的结果;2<<3
相关代码:
public class OperatorDemo3 {
	public static void main(String[] args) {
		//特点:该符号左边的数据*2的移动次幂
		//3 * 2^2
		System.out.println(3<<2);
		//特点:该符号左边的数据除以2的移动次幂
		System.out.println(24>>2);
		System.out.println(-24>>>2);
	}
}
6.三目运算符
格式:
(关系表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
例题:
  1. 获取两个整数中的最大值
  2. 获取三个整数中的最大值
  3. 比较两个整数是否相同
相关代码:
public class OperatorDemo {
	public static void main(String[] args) {
		
		//求两个数据是否相等
		int a = 100;
		int b = 200 ;
		
		//用三元运算符实现
//		boolean flag = (a==b) ? true : false;//==表示两个数据进行比较
//		System.out.println("flag:"+flag);
		//优化改进
		boolean flag = a==b ;
		System.out.println(flag);
		
		//求两个数据中的最大值
		//先定义变量max
		int max = (a>b) ? a : b ;
		System.out.println("两个数据中的最大值是:"+max);
		
		System.out.println("-----------------------");
		
		//求三个数据中的最大值
		int m = 10 ;
		int n = 50 ;
		int z = 20 ;
		//可以使用中间第三方变量进行实现,实际开发中就使用第三方进行实现
//		int temp = (m>n) ? m : n ;
//		//定义max2
//		int max2 = (temp > z) ? temp : z ;
		
		//一步走:
		int max2 = (m>n) ? ((m>z)? m: z) : ((n>z)? n: z) ;//不建议使用
		
		System.out.println("三个数据中的最大值是:"+max2);
		
	}
}
7.键盘录入
1)。键盘录入数据概述
我们目前在写程序的时候,数据值都是固定的,但是实际开发中,数据值肯定是变化的,所以,我准备把数据改进为键盘录入,提高程序的灵活性。
2)。如何实现键盘录入数据呢?(目前先记住使用)
导包(位置放到class定义的上面) import java.util.Scanner;快捷键:ctrl+shift+o
创建对象 Scanner sc = new Scanner(System.in);
接收数据 int x = sc.nextInt();
相关代码:
public class ScannerDemo {
	public static void main(String[] args) {
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in) ;
		
		//录入数据
		//提示
		System.out.println("请您输入一个数据:");
		int a = sc.nextInt();
		
		//输出
		System.out.println("您输入的数据是:"+a);
	}
}
练习题:
1.键盘录入两个数据,并对这两个数据求和,输出其结果。
public class ScannerTest {
	public static void main(String[] args) {
		//1)创建键盘录入对象
		Scanner sc = new Scanner(System.in)  ;
		
		//2)录入数据
		//提示
		System.out.println("请输入第一个数据:");
		int firstNumber = sc.nextInt() ;
		
		System.out.println("请输入第二个数据:");
		int secondNumber = sc.nextInt() ;
		
		//定义个最终变量
		int result = firstNumber + secondNumber ;
		System.out.println("result:"+result);
		
		
	}
}
2.键盘录入三个数据,获取这三个数据中的最大值
3.键盘录入两个数据,比较这两个数据是否相等
public class ScannerTest2 {
	public static void main(String[] args) {
		//1)创建键盘录入对象
		Scanner sc = new Scanner(System.in) ;
		
		//2)录入 数据
		System.out.println("请输入第一个数据:");
		int a = sc.nextInt() ;
		
		System.out.println("请输入第二个数据:");
		int b= sc.nextInt() ;
		
		System.out.println("请输入第三个数据:");
		int c = sc.nextInt() ;
		
		//使用中间第三方变量,并且使用三元运算符
		int temp = (a > b) ? a : b ;
		//定义最大值变量
		int max = (temp >c) ? temp :c ;
		System.out.println("三个数据中的最大值是:"+max);
		System.out.println("-----------------------------");
		
		//键盘录入两个数据,比较这两个数据是否相等
		//录入数据
		System.out.println("请输入一个数据:");
		int m = sc.nextInt() ;
		
		System.out.println("请输入另一个数据:");
		int n = sc.nextInt() ;
		
		//定义变量
		boolean flag = (m==n) ? true : false ;
		System.out.println(flag);
		
		System.out.println("------------------------------");
		//方式2:
		boolean flag2 = m==n ;
		System.out.println(flag2);
	}
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值