初学Java 记笔记

java是面向对象的编程语言,具备三大特征:封装 继承 多态。  

java又是一种跨平台的语言

编码

Hello World

public class Hello{
    public static void main(String[] args){
        System.out.println("Hello World!");
    }
}

类的用法规范

1.必须是英文字母 2.首字母大写  3.多个单词用驼峰命名规则  4.单词有意义

1.JAVA 规范的三种注释方式
   单行注释://
   多行注释:/*   */
   文档注释/**     */
   
作用:
1、对所有的程序进行解释说明,增强可读性。方便自己,也方便别人。
2、调试所有代码   
   
   
2.单行注释和多行注释的作用
对所写程序进行解释说明,增强可读性
调试所写的代码


3.单行注释和多行注释,注释的内容不参与编译。

 
 
 
4.文档注释的使用:
   注释内容可以被jdk提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的文档说明。
文档注释格式  
  */
   /**
   文档注释
   
   */


   /*
  多行注释
   */
多行注释不可以嵌套使用

5.main方法是程序的入口   格式是固定的。

6.Java程序编写-编译-运行的过程 
编写:我们将编写的Java代码保存在以Java结尾的源文件中
编译:使用Javac.exe命令编译我们的Java源文件。格式:javac源文件名.java
运行:使用java.exe命令解释运行我们的字节码文件。格式:java类名

7.在一个Java源文件过程中可以申明多个class,只能有一个类声明为public,而且要求申明为public的类名和源文件名相同。

程序的入口是main方法,格式是固定的。  public  static  void   main(String[] args){}   args=arguments(参数)可变   []也能变化

8.输入语句
System.out.println();换行
System.out.print();不换行

每一句执行语句以;结尾

编译的过程:编译过后,会生成一个或者多个字节码文件。字节码文件名和java源文件中类名相同


标识符的使用   (不遵守规则,编译不通过)
1.标识符:凡是自己可以起名字的地方都叫标识符。
  比如:类名、变量名、方法名、接口名、包名....
  
2.标识符的命名规则:
   由26个字母大小写,0-9,或$组成
   数字不可以开头
   不可以使用关键字和保留字,但能包含关键字和保留字。
   java中严格区分大小写,长度无限制。
   标识符不能包含空格。
   
Java中的名称命名规范:
包名:多单词组成时所有字母都小写:xxxyyyzzz
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个
  单词首字母大写:xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

命名尽量见名知意

java采用unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用

变量的使用
1.java定义变量的格式:数据类型  变量名 = 变量值;
变量在使用前应该先声明后使用
变量都定义在其作用域内。作用域内,他是有效的。
同一个作用域内,不可以声明两个同名的变量

//逆向思维  反证法


java按照数据类型分两类

基本数据类型:
  整型:byte、short、int、long
  浮点型:(表示带小数点的数值) float(后面加f或者F)            double
                                (单精度 4字节)             (双精度  8字节)
  字符型:char(1字符=2字节)定义char字符通常需要一对""内部通常只能写一个字符
  表示方式:1.声明一个字符 2.转义字符  ”\n“   ”\t“制表符     3.直接使用unicode值表示字符型常量
  布尔型:boolea  只能取两个值之一:true   false
                   常常在条件判断、循环结构中使用

引用数据类型:
   类:class
   接口:interface
   数组:array

二、变量在类中声明的位置:
  成员变量  vs   局部变量 

整形:byte(1字节=8bit)short(2字节)int(4字节)long(8字节)
byte范围:-128-127
声明long变量,必须是以“1”或者“L”结尾
通常定义整形变量时,使用int型


基本数据类型之间的运算规则
前提:这里只讨论的是7种基本数据类型变量间的运算。不包含boolean类型。
1.自动类型提升
结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为数据容量大的数据类型
特别的:当byte、char、short三种类型变量做运算时,结果为int型
byte、char、short、int、long、float、double

容量大小为表示数的范围的大和小。比如:float的容量要大于long容量。

2.强制类型转换
强制类型转换:自动类型提升运算的逆运算 
1.需要使用强转符:()
2.强制型转换可能导致精度损失。

//精度损失举例1
double  d1=12.9
int i1=(int)d1//截断操作

//没有精度损失
long l1  = 123;

1.编码情况1:
long l = 1231231232;//编译失败过大的整数

//编译失败
float f1 =12.3;

//编码情况2:
//整型常量,默认为int型
//浮点型常量,默认为double型
byte b = 12;
byte b1 = b + 1;


string类型变量的使用
1.string属于引用数据类型
2.声明String变量时使用一对“”
3.string可以和前面八种类型变量做运算  且运算只能是连接运算   只能是+
4.运算结果任然是string类型
运算相加的话看数据类型   string+任何数据都是string类型


char ‘’
string “”


强转
int  num  = Integer.paseInt(str1)//可以定义int


int  number = 1001;
string numberStr = "学号:"
string info= numberStr + number;//连接运算
System.out.println(info);

计算机中不同进制的使用说明
二进制:0或者1,满2进1,以0b或者0B开头
十进制:0-9,满10进1
八进制:0-7,满8进1,以数字0开头
十六进制:0-9及A-F,满16进一,以0x或者0X开头,此处A-F不区分大小写

任意两种进制都要会算

符号位  0表示为正数
        1表示为负数


运算符之一:算数运算符
+ — + - * / %
自增1不会改变本身变量的数据类型
(前)++ 先加1在运算
(后)++ 先给值再自增
(前)-- 先自减1后运算
(后)-- 先运算再自减1 

//%取余运算
1.结果的符号与被模数符号相同
2.开发中,经常使用%来判断是否能被整除的情况


运算符之二:赋值运算符
=  +=  -=  *=   /=   %=

=赋值符号  i=3 3赋值给i

连续赋值  int j1 = 10;int j2 = 10;   int  j1,j2;   j1=j2=10;
num1=num1 + 2   num1 + = 2
开发中,如果希望变量实现+2的操作,有几种方法
方式一:num=num+2
方式二:num+=2   //这种方式不会改变变量本身的数据类型(推荐)

开发中,如果希望变量实现+1的操作,有几种方法
方式一:num=num+1
方式二:num+=1
方式三:num++

运算符之三:比较运算符
结论:比较运算符的结果为boolean类型
区分==,=
int i=10;
int j=20;
System.out.println(i==j);//结果为false
System.out.println(i=j);//结果为20

运算符之四:逻辑运算符
运算符:&逻辑与   |逻辑或     !逻辑非    &&短路与  ||短路或  ^逻辑异或
1.逻辑运算符操作的都是boolean类型
区分&与&&(一假为假)
相同点:&和&&的运算结果相同
相同点:当符号左边是true时,二者都会执行符号右边的运算
不同点:当符号左边是false时,&继续执行符号右边的运算。&&不再执行符号右边的运算。

区分:|和||(一真为真)
相同点:|与||运算结果相同
相同点:当符号左边是false时,二者都会继续执行符号右边的运算
不同点:当符号左边是true时,|会继续执行符号右边的运算,而||不在执行符号右边的运算

开发时推荐使用短路

运算符之五:位运算符(了解)
结论:
1.位运算符操作都是整形的数据
2<<:在一定范围内,每向左移一位相当于*2
 >>:在一定范围内,每向右移动一位相当于/2

最高效的方式计算。用位运算符

练习:交换两个变量的值
方式一:定义临时变量的方式
int  temp = num1
num1 = num2
num2 = temp

方式二:好处:不用定义临时变量
弊端:相加操作可能超出存储范围,有局限性
num1=num1+num2
num2=num1-num2
num1=num1-num2

方式三:使用位运算符
num1=num1^num2
num2=num1^num2
num1=num1^num2

运算符之六:三元运算符
1.结构:(条件表达式)?表达式1:表达式2
2.说明:1.条件表达式为boolean类型
        2.根据条件表达式真或假,决定执行表达式1还是表达式2
        如果表达式为true,则执行表达式1。
        如果表达式为false,则执行表达式2。
表达式1和表达式2必须要是同种类型

凡是使用三元运算符的地方都可以改写if  else  反之则不行
如果程序既可以用三元运算符,又可以使用if-else结构那么优先使用三元运算符。原因:简单,高效

运算符的优先级:凡是早运算就加()

三种结构
if(条件表达式){
执行表达式
}

第二种:二选一
if(条件表达式){
执行表达式1
}else{
执行表达式2
}

第三种多选一
if(条件表达式){
执行表达式1
}else if(条件表达式){
执行表达式2
}
……

说明:else结构是可选的,针对多个条件的表达式是互斥关系(或者是没有交集),哪个判断和执行语句声明在上面还是在下面无所谓
如果多个条件表达式是有交集的,则要根据实际情况,考虑清楚应该将哪个结构声明放在上面。
如果多个条件表达式有包含的关系,通常情况下,需要将范围小的申明放在范围大的申明的上面,否则,范围小的没机会。

如何在键盘中获取不同点类型变量,需要使用Scanner类
具体实现步骤
1.导包:import java.util.Scanner;
2.Scanner实例化:Scanner in =  new Scanner(System.in);
3.调用Scannner类方法,来获取指定类型的变量
格式   int  age = scanner.nextint()
         string  name = scanner.next()
char方法scanner没有明确的提供方法,只能获取一个字符串
String  gender = scan.next()
char genderChar = gender.charAt(0)//调用索引为0位置上的字符


radom函数[0.0-1.0)取值
int value =(int)(Math.radom()*90 + 10)[0.0-100.0)//包含强转
//公式[a,b]:(int)(Math.radom()*(b-a+1)+a)


分支结构之二:switch-case
1.格式
switch(){
case常量1:
执行语句1;
break;

case常量2:
执行语句2;
break;

……

default:
执行语句n
break;

}

说明:
根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应的case结构中,调用其他语句
当调用完执行语句后,则仍然向下执行case语句中的执行语句,直到遇到break关键字或此switch-case结构末尾结束为止。
break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出。

switch结构中的表达式,只能是如下的6种类型之一:byte、char、short、int、枚举类型(jdk5.0新增)、string类型(jdk7.0新增)
case之后只能申明常量,不能申明范围
break关键字可选
defaut:相当于if-else中的else,是可选的,位置是灵活的。
说明:凡是可以使用switch-case的结构,都可以使用if-else。反之不成立。

循环结构
for循环结构的四个要素
1.初始化条件
2.循环条件------boolean类型
3.循环体
4.迭代条件

二for循环的结构
for(1;2;4){

}

while循环使用
1.初始化条件
2.循环条件------boolean类型
3.循环体
4.迭代条件

说明:写while不要弄丢迭代条件,一旦丢了可能就是死循环,程序应该避免死循环
while(){


}
for循环和whlie循环可以相互转换
区别:for循环和while循环的初始化作用域条件不同

二do-while循环结构
do{
}while();
说明do-while至少会做一次判断

嵌套循环:将一个循环结构申明在另一个循环中就是嵌套循环

外层循环
内层循环

说明
内层循环遍历一遍,只相当于外层循环体执行了一次
假设外层循环要执行m次,内层循环要执行n次,此时内层循环执行了m*n次

技巧:外层循环控制行数,内层循环控制列数

break和continue关键字的使用
                                             使用范围              循环中使用的作用                     相同点
break:距离次关键字最近的for                switch-case              结束当前循环                 关键字后面不能声明执行语句

continue:                                 循环结构中使用            结束当次循环                 关键字后面不能声明执行语句

label:for()

break  label  //结束指定标识的循环

continue label //结束指定当次循环

一:数组的概述
 * 数组是多个相同类型的数据按照一定顺序排列的集合,并使用一个名字命名的,通过一定编号的方式对数组进行统一管理
 *
 * 二数组的相关概念
 * 数组:array
 * 数组名
 * 下标(索引)
 * 元素
 * 数组长度
 *
 * 三:数组的特点:数组是有序排序的
 *
 * 四:数组属于引用类型变量。数组的元素,既可以是基本类型数据,也可以是引用数据类型
 *
 * 五:创建数组对象会在内存中开辟一整块连续的空间
 *
 *六:数组的长度一旦确定,就不能修改
 *
 *
 * 七:数组的元素分类类型:按照维数:一位数组,二维数组……    按照类型:基本数据和引用数据
 
 
一维数组的使用
一维数组的初始化和声明
如何调用数组中的指定位置的元素
如何获取数组的长度
如何遍历数组
数组元素的默认初始化值
数组的内存解析

  //五:数组元素默认初始化值
        //数组元素是整形,默认初始化值为0
        //数组元素是浮点型,默认初始化值0.0
        //数组元素是char型,默认初始化值0,不是‘0’ 是‘\u0000'
        // 数组元素是Boolean型:false


数组的内存解析
栈:局部变量
堆:new出来的结构:对象,数组

java的方法签名:1:方法签名  2参数列表  在同一个类中不允许有两个方法签名完全相同

* 方法的重载
* 在同一个类中,方法名称相同,但是参数列表不同
* 这个就是方法的重载
* 编译器在编译时会根据方法签名来调用和绑定不同的方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值