Java笔记-基础篇(1)

第一章 语言基础

一.基本介绍
1.JVM:JAVA虚拟机(Java Virtual Machine)
功能:执行java语言
JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
2.JDK:Java开发工具包(java Development Kit):没有JDK,无法编译JAVA应用程序,JDK是整个JAVA开发核心。包含JRE
3.JRE:Java运行环境(Java Runtime Environment)包括java Runtime Environment和java Plug-sn

java三步走:
1.编写源代码 xxx.java
2.编写成字节码文件 xxx.class javac(jdk)
3.运行 java(jre)
psvm Alt+/快捷键
sout Alt+/快捷键

二.基本数据类型
1.变量:只可以发生改变的量
2.变量的定义:
数据类型 变量名 [=值];
(变量定义三要素:数据类型 变量名 值)
a:变量名:变量的名字
规则:字母,数字,_(下划线)以及$,其中数字不能在首位,不能使用关键字和保留字;
规范:首字母小写,名词,驼峰userAge
b:数据类型:
1)基本数据类型(原始数据类型):只有8个
整型:byte(-128~127) short int long
浮点型:float(带f/F) double(小数默认)
字符型:char ' 'or ASCII
布尔型:boolean : true(1) or false(0) eg:boolean b=true;
2)引用数据类型(自定义数据类型):无数个
0的ASCII值为48
String str 定义字符串
(1)变量的三要素:类型 名称 值
变量必须赋值,如果不赋值则无法使用
eg:

      long m;//声明一个变量,类型为long
      m=88;//初始化 第一次赋值
      System.out.println(m);

(2)运算符
1.算术运算符:= - * / %(+:a:求和(纯数字运算);b:拼接(非数字运算))

public class Demob {
    public static void main(String[] args) {
       int a=1;
       int b=5;
       int c=a+b;
       int d=a-b;
       int e=a*b;
       int f=a/b;
       int g=a%b;
        System.out.println(c);
        System.out.println(d);
        System.out.println(e);
        System.out.println(f);
        System.out.println(g);
    }
}

结果:
6
-4
5
0
1

2.赋值运算符:“=”将等号右边的表达式的结果赋给等号左边的变量 操作的是地址
3.逻辑运算符:&&(并且) ||(或者) !(求反) 逻辑运算符的结果一定是一个boolean类型
4.关系运算符:< > <= >= ==(比较的事两个数值的内存地址是否相等) != 得到的结果是boolean类型

//Math.random() 随机数[0,1)
public class Demob {
    public static void main(String[] args) {
       int a=(int)Math.random()*10+1;
       int b=(int)Math.random()*10+1;
       boolean b1=a>b;
       boolean b2=a<b;
       boolean b3=a==b;
        System.out.println(b1);
      System.out.println(b2);
        System.out.println(b3);
        System.out.println(a);
        System.out.println(b);
    }
}

5.二元运算符:a++(先用后加) ++a(先加后用) --a a--
+= -= *= /= %=
6.三目表达式:表达式4=表达式1?表达式2:表达式3;

三.类型转换
1.自动类型转换:int float double---->int double
原则:类型兼容 小范围类型自动转换为大范围类型
int 与char 之间的关系 ASCII
int-->char 错误 char-->int 正确(int可以不可以转换成char,char可以转换成int)
其他类型与String之间的关系 小窍门:String str=b1+"";
2.强制类型转换:变量=(目标类型)值:有可能出错
四.输出操作,转义字符

System.out.println(自带换行);
System.out.print(不带换行);
System.err.println(红字输出);
System.out.println("a\nb");\n转义字符
System.out.println("a\tb");\n制表位
\"-->" \'-->' \\--l>\

五.输入
1.导包(出处)
import java.util,Scanner;
2.产生一个键盘对象
Scanner 键盘名=new Scanner(System.in);
3.接收输入 以空格或者回车为一次输入
int a=键盘名.nextInt();
double b =键盘名.nextDouble();
String c=键盘名.nextLine();/键盘名.next();
六.分支结构
1.if
if(条件){
操作;
}

  1. if-else
    if(条件){
    操作1;
    }else{
    操作2;
    }

3.多重if
if(条件1){
操作1;
}else if(条件2){
操作2;
}[else{
操作3;
}]

4.switch-case
switch(变量){
case 常量:
操作1;
break;
...
default:
操作n;
break;
}

注意事项:
1.分支的常量值必须唯一不能相同;
2.分支中的break不能省略,否则会出现语义问题;
3.分支中的常量类型局限于:int char String;

1)循环结构-while循环
循环:重复执行某些代码指令的结构是循环结构,循环结构由条件和操作组成
1.while(条件){
操作;
}//流程图:菱形为判断条件,矩形为执行操作
先判断条件,条件成立时,执行操作,执行完操作后继续判断条件,依次循环,直到条件不成立。
2.do-while循环
do{
操作;
}while(条件);
执行一次操作,然后进入循环,条件为真时继续操作,条件为假,结束操作。
循环结构——问题探讨:打印*号

public class Demoa {
    public static void main(String[] args) {
        int num = 0;//*号个数
        int sum = 0;//*号个数
        int i=1;
        while (num<28) {
            if(num==sum){
              sum+=i;////行数+之前的*号数
                i++;//行数+1
                if(num!=0){
                    System.out.println(" ");
               }
            }
            System.out.print("* ");
            num++;
        }
    }
}


 运行结果:
*  
* *  
* * *  
* * * *  
* * * * *  
* * * * * *  
* * * * * * * 
Process finished with exit code 0

3.for循环
for(变量初始化;条件;改变){
操作;
}
注意事项:
1):for(省略)--> 死循环
2):少条件-->死循环
3):for(定义变量初始化)与在for外部定义变量初始化的区别
在for(定义int i=0){}外部不能使用;int i=0 for(){}外部可以使用
循环中的关键字:
1.continue:结束当次循环,当次循环后边的内容不再执行,开始下一次循环//注意:continue必须在程序体的最后一行!

public class Demob {
    public static void main(String[] args) {
      int i;
      int num=0;
       for(i=1;i<=100;i++){
           if(i%3==0){
               num+=i;
               continue;
           }
       }
        System.out.println(num);
    }
}

输出100以内能被3整除数的和:1683
2.break:终止当次循环,执行循环外的内容.
3.多重循环
4.循环命名
名字:循环,使用时break 名字或者continue 名字
eg:

a:for(i=1;i<10;i++) {
           for (j = 1; j <i; j++) {
               s = j * i;
               System.out.println(j + "*" + i + "=" + s);
               break a;
           }
       }
全部评论

相关推荐

bg双非本科,方向是嵌入式。这次秋招一共拿到了&nbsp;8&nbsp;个&nbsp;offer,最高年包&nbsp;40w,中间也有一段在海康的实习经历,还有几次国家级竞赛。写这篇不是想证明什么,只是想把自己走过的这条路,尽量讲清楚一点,给同样背景的人一个参考。一、我一开始也很迷茫刚决定走嵌入式的时候,其实并没有一个特别清晰的规划。网上的信息很零散,有人说一定要懂底层,有人说项目更重要,也有人建议直接转方向。很多时候都是在怀疑:1.自己这种背景到底有没有机会2.现在学的东西到底有没有用3.是不是已经开始晚了这些问题,我当时一个都没答案。二、现在回头看,我主要做对了这几件事第一,方向尽早确定,但不把自己锁死。我比较早就确定了嵌入式这个大方向,但具体做哪一块,是在项目、竞赛和实习中慢慢调整的,而不是一开始就给自己下结论。第二,用项目和竞赛去“证明能力”,而不是堆技术名词。我不会刻意追求学得多全面,而是确保自己参与的每个项目,都能讲清楚:我负责了什么、遇到了什么问题、最后是怎么解决的。第三,尽早接触真实的工程环境。在海康实习的那段时间,对我触动挺大的。我开始意识到,企业更看重的是代码结构、逻辑清晰度,以及你能不能把事情说清楚,而不只是会不会某个知识点。第四,把秋招当成一个需要长期迭代的过程。简历不是一次写完的,面试表现也不是一次就到位的。我会在每次面试后复盘哪些问题没答好,再针对性补。三、我踩过的一些坑现在看也挺典型的:1.一开始在底层细节上纠结太久,投入产出比不高2.做过项目,但前期不会总结,导致面试表达吃亏3.早期有点害怕面试,准备不充分就去投这些弯路走过之后,才慢慢找到节奏。四、给和我背景相似的人一点建议如果你也是双非,准备走嵌入式,我觉得有几件事挺重要的:1.不用等“准备得差不多了”再投2.项目一定要能讲清楚,而不是做完就算3.不要只盯着技术,多关注表达和逻辑很多时候,差的不是能力,而是呈现方式。五、写在最后这篇总结不是标准答案,只是我个人的一次复盘。后面我会陆续把自己在嵌入式学习、竞赛、实习和秋招中的一些真实经验拆开来讲,希望能对后来的人有点帮助。如果你正好也在这条路上,希望你能少走一点弯路。
x_y_z1:蹲个后续
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务