Java入门

编码知识

  • ASCII美国信息交换标准代码
    所有字符1字节,128个
  • Unicode 统一码
    最少的字符都占2个字节
  • ANSI美国国家标准码
    属于ASCII码的占1个字节,不属于的占2个字节
  • UTF-8 针对Unicode的一种可变长度字符编码
    ASCII码的1字节,带有变音符号的拉丁文什么的2字节
    中文日文什么的3字节,极少用的4字节
  • GBK 针对汉字的编码
    ASCII码的都是1字节,汉字2字节

基本数据类型(8种)

基本类型位数字节数
byte8位1字节
short16位2字节
int32位4字节
long64位8字节
double32位4字节
float64位8字节
char16位2字节
boolean

基础知识

  • 第一个程序的编写
    • 编写源程序→编译源程序(javac.exe)→运行程序(java.exe)
    • java源程序(名字必须和class名字一样)→java字节码文件→JVM运行
    • Hello.World.java→HelloWorld.class
    • javac HelloWorld.java
      java HelloWorld

逻辑运算符
&与
&&短路与(只要出现FALSE就输出FALSE,不再遍历后面的逻辑)
|或
||短路或(同上)

位运算符(二进制运算符)

  • 按位与&
  • 按位或|
  • 异或^
  • 取反~
  • 左移位<<,右移位>>,无符号右移位>>>(无论如何高位补零)
  • Java三元运算符(?)
    a>b?a:b,(问号右边的a>b条件满足则输出冒号左边的结果a,否则输出右边的结果b)

类比与python的三元运算符 value = a if a > b else b

基本语句

  • 注释
    //单行注释
    /* */ 多行注释
package Hello_World;

import java.util.Scanner;//为了输入

public class HelloWorld {

	public static void main(String[] args) {
		// TODO
}
  • 输入
    Scanner in = new Scanner(System.in);
    引用:读入值为一行in.nextLine()、读入值为一整型数in.nextInt()

  • 输出
    System.out.print(<输出内容>);
    System.out.println(<输出内容>); //输出一行

浮点数是不精确的
浮点数和整数的运算要注意!
整数可以自动转为浮点,浮点不能自动转为整数

  • 判断语句
    • if-else if-else
    • switch-case
switch(type){
	case 1: //todo1
	break;
	case 2: //todo2
	break;
	default:
	//todo1
	}
  • 循环
    • while循环
    • do while循环
    • for-each循环
    for(int k : array){
    	//todo
    }
    
    • for循环
    for(int i=0,i<n,i++){
    	//todo
    }
    

循环中的状态可用代码表格检查
可以用边界数据来做测试

单目运算符优先级最高

大的计数循环可以用源代码做个小循环的demo

计算机的int类型4字节(2^31)double类型

编写可扩展性的代码,软编码

boolean a =true 创建一个布尔变量

java中boolean变量的true,false首字母是小写
python中boolean变量首字母是大写

break跳出当层循环,continue跳出当次循环
label:
break label 选择循环跳出

boolean 布尔类型

! && || 逻辑运算(这也是优先级)

println每次输出后换行
printf 格式化输出 printf("%.2f",result)
print 直接输出

for(表达式;条件;表达式)

表达式里面可以用逗号多加几个表达式

数组

int[] a = new int[100]
初始默认所有数为0
同类型的数据结构
java一旦创建,不能改变大小
元素个数必须给出,个数可以是变量
a[1]=a[2]+1
编译器不会检查下标是否异常,但是程序运行会产生异常而终止
数组内部成员length a. length

int[] a = {1,2,3,4,5,6}
数组理解为一个引用!!
普通变量 所有者
数组变量(对象变量) 管理者
数组变量的赋值是管理权限的赋予
数组变量的比较是比较管理的数组是相同的吗(比较的是内存位置而非内容)

数组的for-each循环
int[] data ={1,2,3}
for (int k : data){;}
只能遍历,但是不能用k=value来修改data中的值
素数案例

二维数组
int[][] a ={{1,2,3},{4,5,6},}
井字棋

数字类型可与str直接输出,不需要变成str,因为加号会把数字自动变成字符串
python的加号则不可以,需要显式的将数字str()

字符类型

char
String s = new String(“abc”)

  • 逃逸字符

    • \b 回退一格(back space)
    • \t 制表符,到下一个表格位置(tab)
    • \n 换行(new line)
    • \r 回车(return)
    • " 双引号 ’ 单引号
    • \ 反斜杠本身
  • 引用数据类型 VS 基本数据类型(8种内置数据类型)
    1.Byte VS (byte)
    2.Short VS (short)
    3.Integer VS (int)
    4.Long VS (long)
    5.Float VS (float)
    6.Double VS (double)
    7.Boolean VS (boolean)
    8.Character VS (char)
    String

  • 运算符 .

  • 字符串的运算

  • 字符串的输入

    • in.next() 以空格(广义,包括空格,回车和TAB等)为一个
    • in.nextLine()
  • 对象变量的赋值

  • 比较String

    • s == “bye” 判断是否是同一个字符串(理解为管理同一个)
    • s.equals(“bye”) 判断字符串内容是否相等
  • 字符串操作(使用.运算符)

    • length() 长度
    • charAt() 访问字符
    • substring() 子串
    • indexOf() 寻找字符
    • toLowerCase()
    • 以上函数都不会改变原字符串(java字符串是不变的)
  • switch case的应用

  • Math类

函数

  • 函数的定义和调用
  • 参数传递
    • 类型不匹配
      char<int<double
      当函数期望的参数类型比调用函数时给的值的类型宽的时候,编译器能悄悄替你把类型转换好,否则要自己强制类型转换(int)0.5
    • Java在传递调用函数时,永远只能传值给参数
      • 参数(形参)与值(实参)的关系
      • 形参和实参的说法已经过时,不符合理解
      • 传递字符串时仍然是值传递,但是传递数组这些引用类型时候是对象传递,会影响原变量
  • 本地变量
    • 定义在块里(函数或者语句,只要大括号内),本地变量进入块产生(需要初始化,不会被默认初始化。参数(也是本地变量)调用函数时被传进来的值初始化了),离开块消失。
    • 生存期和作用域(相同,都在大括号内)
    • 块外面定义的变量在里面仍然有效

黑马程序员

  • 标识符:自己定义的内容,起的名字(命名规范)。
  • 数组
    • 动态初始化 int[] = new int[10],会有默认值
      静态初始化int[] = {1,2,3,4} 或者 int[] = new int[]{1,2,3,4}
    • 访问数组元素
      直接打印整个数组得到的是内存地址的哈希值。
      访问用array[0],或者赋给某个变量
    • 赋值
      array[1] = 1
    • java的内存划分(5个部分)
      1. (Stack):存放的都是局部变量方法的运行在栈当中
        局部变量:方法的参数,或者是方法{内部的变量(保存地址值)}(变量也是一个局部变量,所以保存在栈当中)
        作用域:一旦超出作用域,立刻从栈内存中消失
      2. (Heap):凡是new出来的对象,都在堆内存中
        堆内存里的对象,都有一个地址值:16进制
        堆内存里面的数据都有默认值
        如果整数 默认0
        如果是浮点数 默认0.0
        如果是字符 默认\u0000
        如果是布尔 默认false
        如果是引用类型 默认null
      3. 方法区(Method Area):存储.class(字节码文件)的相关信息,包含方法的信息。
      4. 本地方法栈(Native Method Stack):与操作系统相关
      5. 寄存器(pc Register):与CPU相关
    • 数组的内存划分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值